python绘制双柱形图代码实例
作者:jopen 时间:2022-02-28 19:42:27
图表是比干巴巴的表格更直观的表达,简洁、有力。工作中经常遇到的场景是,有一些数值需要定时的监控,比如服务器的连接数、活跃用户数、点击某个按钮的人数,并且通过邮件或者网页展示出来。当我们想关注比数值本身更多的信息(像数值的变化、对比或异常),图表就非常有用了。把数值转化为图片要依赖第三方库的帮忙,在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')
最终图表显示如下:
总结
从上面的代码片段可以了解到:matplotlib是一个自由度非常高的图表库,能够实现从颜色、字体等基础属性到图例、网格等图表属性的定制输出。
Django admin实现图书管理系统菜鸟级教程完整实例
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Python实现读取txt文件并画三维图简单代码示例
如有不足之处就,欢迎留言指出。感谢朋友们对本站的支持!
来源:http://www.open-open.com/code/view/1449667454441
标签:python,柱形图
0
投稿
猜你喜欢
Python 中如何将十六进制转换为 Base64
2022-09-07 01:20:14
Python编程之基于概率论的分类方法:朴素贝叶斯
2023-10-08 10:15:52
python爬虫 urllib模块反爬虫机制UA详解
2022-04-07 02:22:51
python操作数据库之sqlite3打开数据库、删除、修改示例
2024-01-26 15:47:01
go variant底层原理深入解析
2024-05-22 17:45:08
Python中time库的使用(日期时间)
2022-11-12 09:04:23
vue中的 $slot 获取插槽的节点实例
2024-04-30 10:26:58
Mysql 命令行模式访问操作mysql数据库操作
2024-01-14 07:43:41
python读取各种文件数据方法解析
2021-08-31 09:16:54
php session 检测和注销
2023-11-17 22:45:02
MSSQL 2005 安全设置图文教程
2024-01-21 08:59:51
Python数据库编程之pymysql详解
2024-01-20 03:16:19
分页存储过程(用存储过程实现数据库的分页代码)
2024-01-20 05:22:57
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2023-12-17 18:52:13
Python 中面向接口编程详情
2022-05-06 19:55:41
mssql查找备注(text,ntext)类型字段为空的方法
2024-01-28 04:13:18
如何批量消除网页超级链接上的“虚线框”
2008-10-15 12:55:00
mysql 动态执行存储过程语句
2024-01-27 01:54:38
ASP实例:幻灯片新闻代码
2008-11-21 17:40:00
Python Pandas中缺失值NaN的判断,删除及替换
2021-08-27 22:10:23