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简单计算文件夹大小的方法
Jul 14 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python内存读写操作示例
Jul 18 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python操作Excel插入删除行的方法
Dec 10 Python
Python之pymysql的使用小结
Jul 01 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
Numpy 多维数据数组的实现
Jun 18 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
如何正确理解python装饰器
Jun 15 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
python docx 中文字体设置的操作方法
2018/05/08 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
心理健康心得体会
2014/01/02 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
员工晚婚的请假条
2014/02/08 职场文书
婚纱店策划方案
2014/05/22 职场文书
电子商务专业自荐信
2014/06/02 职场文书
公务员个人年终总结
2015/02/12 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python