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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
将python安装信息加入注册表的示例
Nov 20 Python
python实现高斯投影正反算方式
Jan 17 Python
Python使用type动态创建类操作示例
Feb 29 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
python实现猜拳游戏项目
Nov 30 Python
python 检测nginx服务邮件报警的脚本
Dec 31 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函数的常用方法及注意之处小结
2011/07/10 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
用python写爬虫简单吗
2020/07/28 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
python自动化发送邮件实例讲解
2021/01/04 Python
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
美容师的职业规划书
2013/12/27 职场文书
出国留学介绍信
2014/01/13 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
安全生产标语大全
2014/10/06 职场文书
三八妇女节标语
2014/10/09 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
幼儿园六一主持词
2015/06/30 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书