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 相关文章推荐
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python实现在线程里运行scrapy的方法
Apr 07 Python
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
django的settings中设置中文支持的实现
Apr 28 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
手动安装python3.6的操作过程详解
Jan 13 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
django模型类中,null=True,blank=True用法说明
Jul 09 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
B2K与车机的中波PK
2021/03/02 无线电
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
自我鉴定书面格式
2014/01/13 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
暑期培训心得体会
2014/09/02 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python
Python实现信息管理系统
2022/06/05 Python