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实现自动登录百度空间的方法
Jun 10 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
python中lambda()的用法
Nov 16 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
基于python的ini配置文件操作工具类
Apr 24 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
Django重设Admin密码过程解析
Feb 10 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Django中的模型类设计及展示示例详解
May 29 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
python可视化大屏库big_screen示例详解
Nov 23 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
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
js面向对象编程总结
2017/02/16 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
小孩百日宴答谢词
2014/01/15 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
班组长竞聘书
2014/03/31 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
本科毕业生求职信
2014/06/15 职场文书
九年级数学教学反思
2016/02/17 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle