python绘制双柱形图代码实例


Posted in Python onDecember 14, 2017

图表是比干巴巴的表格更直观的表达,简洁、有力。工作中经常遇到的场景是,有一些数值需要定时的监控,比如服务器的连接数、活跃用户数、点击某个按钮的人数,并且通过邮件或者网页展示出来。当我们想关注比数值本身更多的信息(像数值的变化、对比或异常),图表就非常有用了。把数值转化为图片要依赖第三方库的帮忙,在Python之中最好的图表库叫matplotlib。(一直觉得,Python最大的优势就是丰富的第三方库,让你能轻易实现各种需求)

matplotlib,顾名思义就是提供了一整套和matlab相似的API,它的文档相当完备,示例页面提供了上百个图表的入门代码,可以说只有你想不到的,没有它做不到的。

举个稍复杂的例子,小明和小红两个同学各有语文、数学、英语的课程成绩,用一个双柱形图输出各项成绩的对比:

#!/usr/bin/env python
# coding: utf-8

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

# 必须配置中文字体,否则会显示成方块
# 注意所有希望图表显示的中文必须为unicode格式
custom_font = mpl.font_manager.FontProperties(fname='/Library/Fonts/华文细黑.ttf')

font_size = 10 # 字体大小
fig_size = (8, 6) # 图表大小

names = (u'小明', u'小红') # 姓名
subjects = (u'语文', u'数学', u'英语') # 科目
scores = ((65, 90, 75), (85, 80, 90)) # 成绩

# 更新字体大小
mpl.rcParams['font.size'] = font_size
# 更新图表大小
mpl.rcParams['figure.figsize'] = fig_size
# 设置柱形图宽度
bar_width = 0.35

index = np.arange(len(scores[0]))
# 绘制「小明」的成绩
rects1 = plt.bar(index, scores[0], bar_width, color='#0072BC', label=names[0])
# 绘制「小红」的成绩
rects2 = plt.bar(index + bar_width, scores[1], bar_width, color='#ED1C24', label=names[1])
# X轴标题
plt.xticks(index + bar_width, subjects, fontproperties=custom_font)
# Y轴范围
plt.ylim(ymax=100, ymin=0)
# 图表标题
plt.title(u'企鹅班同学成绩对比', fontproperties=custom_font)
# 图例显示在图表下方
plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03), fancybox=True, ncol=5, prop=custom_font)

# 添加数据标签
def add_labels(rects):
  for rect in rects:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height, height, ha='center', va='bottom')
    # 柱形图边缘用白色填充,纯粹为了美观
    rect.set_edgecolor('white')

add_labels(rects1)
add_labels(rects2)

# 图表输出到本地
plt.savefig('scores_par.png')

最终图表显示如下:

python绘制双柱形图代码实例

总结

从上面的代码片段可以了解到:matplotlib是一个自由度非常高的图表库,能够实现从颜色、字体等基础属性到图例、网格等图表属性的定制输出。

以上就是本文关于python绘制双柱形图代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处就,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python中实现php的var_dump函数功能
Jan 21 Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 Python
python定时执行指定函数的方法
May 27 Python
Python回调函数用法实例详解
Jul 02 Python
Python中的字符串替换操作示例
Jun 27 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
Python中datetime模块参考手册
Jan 13 Python
python3使用matplotlib绘制散点图
Mar 19 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
python 基于opencv去除图片阴影
Jan 26 Python
Python实现一个Git日志统计分析的小工具
Dec 14 #Python
用matplotlib画等高线图详解
Dec 14 #Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 #Python
python实现发送邮件功能代码
Dec 14 #Python
python正则实现计算器功能
Dec 14 #Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 #Python
python实现BackPropagation算法
Dec 14 #Python
You might like
合作指挥官:孟斯克
2020/03/16 星际争霸
如何给phpadmin一个保护
2006/10/09 PHP
福利彩票幸运号码自动生成器
2006/10/09 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
javascript 播放器 控制
2007/01/22 Javascript
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
Vue基础配置讲解
2019/11/29 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python对DICOM图像的读取方法详解
2017/07/17 Python
python实现Adapter模式实例代码
2018/02/09 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
测控技术自荐信
2014/06/05 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
小学元宵节活动总结
2015/02/06 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android