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 23 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
用python找出那些被“标记”的照片
Apr 20 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
Python向excel中写入数据的方法
May 05 Python
Django框架视图函数设计示例
Jul 29 Python
python动态文本进度条的实例代码
Jan 22 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
教你怎么用Python实现多路径迷宫
Apr 29 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/07/29 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
实例讲解PHP表单
2020/06/10 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
python 字符串split的用法分享
2013/03/23 Python
python妙用之编码的转换详解
2017/04/21 Python
python贪吃蛇游戏代码
2020/04/18 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
python解释器安装教程的方法步骤
2020/07/02 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
幼儿园教育教学反思
2014/01/31 职场文书
大学生求职信例文
2014/06/29 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
消防验收申请报告
2015/05/15 职场文书
田径运动会广播稿
2015/08/19 职场文书
高三化学教学反思
2016/02/22 职场文书
《正比例》教学反思
2016/02/23 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
goland设置颜色和字体的操作
2021/05/05 Golang