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中线程问题的简单讲解
Apr 03 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python中模块与包有相同名字的处理方法
May 05 Python
python中import reload __import__的区别详解
Oct 16 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
python 检查是否为中文字符串的方法
Dec 28 Python
python实现杨氏矩阵查找
Mar 02 Python
python实现知乎高颜值图片爬取
Aug 12 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
用python制作个音乐下载器
Jan 30 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
基于mysql的论坛(5)
2006/10/09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python 探针的实现原理
2016/04/23 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
中文教师求职信
2014/02/22 职场文书
眼镜促销方案
2014/03/15 职场文书
服务标兵事迹材料
2014/05/04 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
小班下学期个人总结
2015/02/12 职场文书
员工试用期工作总结
2019/06/20 职场文书
Django框架中表单的用法
2022/06/10 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript