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读写二进制文件的方法
May 09 Python
Python深入06——python的内存管理详解
Dec 07 Python
快速入门python学习笔记
Dec 06 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
python爬取指定微信公众号文章
Dec 20 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
Python configparser模块配置文件过程解析
Mar 03 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Python urllib request模块发送请求实现过程解析
Dec 10 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中的stdClass类
2014/04/18 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP排序算法类实例
2015/06/17 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
python字符串的常用操作方法小结
2016/05/21 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
请说出你所知道的线程同步的方法
2013/04/19 面试题
旅游管理毕业生自荐信
2013/11/05 职场文书
职称评定自我鉴定
2014/03/18 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
就业意向书
2014/07/29 职场文书
罗马假日观后感
2015/06/08 职场文书
班主任培训研修日志
2015/11/13 职场文书
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL