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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
Python采用raw_input读取输入值的方法
Aug 18 Python
Python iter()函数用法实例分析
Mar 17 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
python 3调用百度OCR API实现剪贴板文字识别
Sep 04 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
Python简易开发之制作计算器
Apr 28 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
德生PL330的评价与改造
2021/03/02 无线电
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
phpStorm2020 注册码
2020/09/17 PHP
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
python的变量与赋值详细分析
2017/11/08 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
python实现机器人行走效果
2018/01/29 Python
Python request使用方法及问题总结
2020/04/26 Python
Python pandas如何向excel添加数据
2020/05/22 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
常见的软件开发流程有哪些
2015/11/14 面试题
最新离婚协议书范本
2014/08/19 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
授权收款委托书范本
2014/10/10 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python