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 Django(图文)
Nov 04 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
Python中你应该知道的一些内置函数
Mar 31 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python3实现的反转单链表算法示例
Mar 08 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
浅析PEP572: 海象运算符
Oct 15 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
Python的历史与优缺点整理
May 26 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
js实现移动端轮播图
2020/12/21 Javascript
Python程序设计入门(5)类的使用简介
2014/06/16 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
flask中过滤器的使用详解
2018/08/01 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
大学生专科学习生活的自我评价
2013/12/07 职场文书
驾驶员岗位职责
2014/01/29 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
食品质检员岗位职责
2015/04/08 职场文书
热爱劳动主题班会
2015/08/14 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python