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实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
pandas对指定列进行填充的方法
Apr 11 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Python实现FLV视频拼接功能
Jan 21 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
序列化Python对象的方法
Aug 01 Python
python可视化大屏库big_screen示例详解
Nov 23 Python
Python Pandas解析读写 CSV 文件
Apr 11 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
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
详解JS函数重载
2014/12/04 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
JSONP基础知识详解
2017/03/19 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
Python 的类、继承和多态详解
2017/07/16 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
python help函数实例用法
2020/12/06 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
销售副总经理岗位职责
2013/12/11 职场文书
社区十八大感言
2014/01/19 职场文书
12岁生日感言
2014/01/21 职场文书
团支部建设方案
2014/05/02 职场文书
学生干部培训方案
2014/06/12 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
小学班主任教育随笔
2015/08/15 职场文书
Python装饰器详细介绍
2022/03/25 Python
Python学习之迭代器详解
2022/04/01 Python
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers