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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
python中解析json格式文件的方法示例
May 03 Python
python九九乘法表的实例
Sep 26 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
python开发游戏的前期准备
May 05 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
python numpy实现文件存取的示例代码
May 26 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Python面向对象编程基础实例分析
Jan 17 Python
利用Python优雅的登录校园网
Oct 21 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 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
关于文本留言本的分页代码
2006/10/09 PHP
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
php session的锁和并发
2016/01/22 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
销售类个人求职信范文
2013/09/25 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
redis缓存存储Session原理机制
2021/11/20 Redis
alibaba seata服务端具体实现
2022/02/24 Java/Android