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简单连接MongoDB数据库的方法
Mar 15 Python
深入理解Python中变量赋值的问题
Jan 12 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
Python3实现的简单验证码识别功能示例
May 02 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 Python
Python语言内置数据类型
Feb 24 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
php超快高效率统计大文件行数
2015/07/05 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
img标签中onerror用法
2009/08/13 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python整数对象实现原理详解
2019/07/01 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
干部下基层实施方案
2014/03/14 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
理财学专业自荐书
2014/06/28 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
详解Nginx 工作原理
2021/03/31 Servers
Java中的随机数Random
2022/03/17 Java/Android