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开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
Python比较两个图片相似度的方法
Mar 13 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
python字典基本操作实例分析
Jul 11 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
pycharm软件实现设置自动保存操作
Jun 08 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
URL Rewrite的设置方法
2007/01/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
JS监听组合按键思路及实现过程
2020/04/17 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
对python中的装包与解包实例详解
2019/08/24 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
迟到检讨书400字
2014/01/13 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL