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 第一步 hello world
Sep 25 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
讲解Python中运算符使用时的优先级
May 14 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
Python进阶篇之字典操作总结
Nov 16 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
python利用faker库批量生成测试数据
Oct 15 Python
python re.match()用法相关示例
Jan 27 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获取当月最后一天函数分享
2015/02/02 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
写出二分查找算法的两种实现
2013/05/13 面试题
小学教师岗位职责
2013/11/25 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
授权委托书怎么写
2014/04/03 职场文书
主要负责人任命书
2014/06/06 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
使用Python拟合函数曲线
2022/04/14 Python