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 相关文章推荐
详解用TensorFlow实现逻辑回归算法
May 02 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python实现逐个读取txt字符并修改
Dec 24 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python设置代理和添加镜像源的方法
Feb 14 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
python+requests接口自动化框架的实现
Aug 31 Python
python wsgiref源码解析
Feb 06 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
php之curl设置超时实例
2014/11/03 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
php中的异常和错误浅析
2017/05/03 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
服务标兵事迹材料
2014/05/04 职场文书
优秀教师演讲稿
2014/05/06 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
万里长城导游词
2015/01/30 职场文书
村官个人总结范文
2015/03/03 职场文书