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的消息队列包SnakeMQ使用初探
Jun 29 Python
5款非常棒的Python工具
Jan 05 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python代码如何实现余弦相似性计算
Feb 09 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
python 动态绘制爱心的示例
Sep 27 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
隐性调用php程序的方法
2015/06/13 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
Python 加密的实例详解
2017/10/09 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
python实现简单日期工具类
2019/04/24 Python
Python Json数据文件操作原理解析
2020/05/09 Python
keras的三种模型实现与区别说明
2020/07/03 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
挂牌仪式主持词
2014/03/20 职场文书
钳工实训报告总结
2014/11/04 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
员工自我评价范文
2015/03/11 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
体育教师教学随笔
2015/08/15 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
Golang 链表的学习和使用
2022/04/19 Golang
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL