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使用in操作符时元组和数组的区别分析
May 19 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
python retrying模块的使用方法详解
Sep 25 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
pandas数据处理之绘图的实现
Jun 15 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
Python打包为exe详细教程
May 18 Python
如何在C++中调用Python
May 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
php自动加载的两种实现方法
2010/06/21 PHP
php实现微信发红包
2015/12/05 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
如何离线执行php任务
2017/02/21 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
Python绘制组合图的示例
2020/09/18 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
数据员岗位职责
2013/11/19 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
大二学年个人总结
2015/03/03 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
道歉短信大全
2015/05/12 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js