python调用matplotlib模块绘制柱状图


Posted in Python onOctober 18, 2019

我们可以调用matplotlib 绘制我们的柱状图,柱状图可以是水平的也可以是竖直的。

在这里我先记录下竖直的柱状图怎么绘制

在这里一般用到的函数就是bar

# bar(left, height, width=0.8, bottom=None, hold=None, **kwargs) 
# 绘制柱形图 
# left:柱形图的x坐标 
# height柱形图的高度,以0.0为基准 
# width:柱形图的宽度,默认0.8 
# facecolor:颜色 
# edgecolor:边框颜色n 
# bottom:表示底部从y轴的哪个刻度开始画 
# yerr:应该是对应的数据的误差范围,加上这个参数,柱状图头部会有一个蓝色的范围标识,标出允许的误差范围,在水平柱状图中这个参数为xerr

在这里我一般特别喜欢将柱状图的边缘颜色设置为白色,因为这样画出来比较好看

eg.

plt.bar(x,+y1,width=0.8,facecolor="#9999ff",edgecolor="white",yerr=error)

下面来说一下画bar chart 的步骤

首先我们需要引入两个模块:

import numpy as np 
import matplotlib.pyplot as plt 

import numpy as np 
import matplotlib.pyplot as plt 
n = 12 
# 生成一个1-12的列表,不包括12,[ 0 1 2 3 4 5 6 7 8 9 10 11] 
x = np.arange(n) 
# np.random.uniform(0.5,1.0,n),生成n个0.5-1.0之间的随机数 
y1 = 3 * np.random.uniform(0.5,1.0,n) 
y2 = 3 * np.random.uniform(0.5,1.0,n) 
# 在这里我们是使用一个随机生成函数生成了两组y的值,生成的这个随机数是服从均匀分布的
# 如果我们的数值比较少我们可以直接给y赋值
# y = [5,7,3]

# 生成一个包含有n个值,均为0.2的list,表示允许的误差范围[-0.2,0.2] 
error = [0.2,] * n 

# bar(left, height, width=0.8, bottom=None, hold=None, **kwargs) 
# 绘制柱形图 
# left:柱形图的x坐标 
# height柱形图的高度,以0.0为基准 
# width:柱形图的宽度,默认0.8 
# facecolor:颜色 
# edgecolor:边框颜色n 
# bottom:表示底部从y轴的哪个刻度开始画 
# yerr:应该是对应的数据的误差范围,加上这个参数,柱状图头部会有一个蓝色的范围标识,标出允许的误差范围,在水平柱状图中这个参数为xerr 
plt.bar(x,+y1,width=0.8,facecolor="#9999ff",edgecolor="white",yerr=error) 
plt.bar(x,-y2,facecolor="#ff9999",edgecolor="white") 
# 绘制文字,显示柱状图形的值 
for x,y1,y2 in zip(x,y1,y2): 
 plt.text(x+0.4,y1+0.05,'%.2f' % y1,ha='center',va='bottom') 
 plt.text(x+0.4,-(y2+0.05),'%.2f' % y2,ha='center',va='top') 

plt.ylim(-3.5,3.5) 
plt.show() 

如果我们需要的是给我们柱状图绘制一些标记,比如横坐标和纵坐标的值,这个时候我们可以像下面这样做。这个例子我用的是官网上的代码。

# Credit: Josh Hemann

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
from collections import namedtuple


n_groups = 5

means_men = (20, 35, 30, 35, 27)
std_men = (2, 3, 4, 1, 2)

means_women = (25, 32, 34, 20, 25)
std_women = (3, 5, 2, 3, 3)

fig, ax = plt.subplots()

index = np.arange(n_groups)
bar_width = 0.35

opacity = 0.4
error_config = {'ecolor': '0.3'}

rects1 = ax.bar(index, means_men, bar_width,
    alpha=opacity, color='b',
    yerr=std_men, error_kw=error_config,
    label='Men')

rects2 = ax.bar(index + bar_width, means_women, bar_width,
    alpha=opacity, color='r',
    yerr=std_women, error_kw=error_config,
    label='Women')

ax.set_xlabel('Group')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))
ax.legend()

fig.tight_layout()
plt.show()

在这里我们设置的X的坐标以及上边的标签,我们主要的代码是:

ax.bar(index, means_men, bar_width,
    alpha=opacity, color='b',
    yerr=std_men, error_kw=error_config,
    label='Men')

ax.set_xticks(index + bar_width / 2) # 设置坐标的其实坐标
ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))

这里的bar函数的参数和我们开始介绍的是一样的,只是我们在设置坐标的时候,一般是我们的条形图的中间所以我们要把宽度除以2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python3中yield生成器的用法
Aug 20 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Python的iOS自动化打包实例代码
Nov 22 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
python中p-value的实现方式
Dec 16 Python
Python bisect模块原理及常见实例
Jun 17 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 #Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 #Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 #Python
python调用Matplotlib绘制分布点图
Oct 18 #Python
Python 异常处理Ⅳ过程图解
Oct 18 #Python
python库matplotlib绘制坐标图
Oct 18 #Python
python实现WebSocket服务端过程解析
Oct 18 #Python
You might like
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
解读python logging模块的使用方法
2018/04/17 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python得到电脑的开机时间方法
2018/10/15 Python
Django实现跨域请求过程详解
2019/07/25 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
python绘制随机网络图形示例
2019/11/21 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
Linux操作面试题
2015/02/11 面试题
会计专业自荐信
2013/12/02 职场文书
毕业横幅标语
2014/10/08 职场文书
二手房购房意向书
2015/05/09 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
SpringBoot整合Minio文件存储
2022/04/03 Java/Android