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 01 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Python判断两个对象相等的原理
Dec 12 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
Linux下python3.7.0安装教程
Jul 30 Python
详解Python发送email的三种方式
Oct 18 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
Python 面向对象之封装、继承、多态操作实例分析
Nov 21 Python
Django基于客户端下载文件实现方法
Apr 21 Python
解决echarts中饼图标签重叠的问题
May 16 Python
Anaconda使用IDLE的实现示例
Sep 23 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
PHP提取中文首字母
2008/04/09 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
Python谱减法语音降噪实例
2019/12/18 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Python实现动态循环输出文字功能
2020/05/07 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
JNI的定义
2012/11/25 面试题
计算机专业个人简短的自我评价
2013/10/23 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
element tree树形组件回显数据问题解决
2022/08/14 Javascript