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中的二维数组的操作方法
May 02 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
轻松理解Python 中的 descriptor
Sep 15 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
简单谈谈python基本数据类型
Sep 26 Python
使用Python实现跳帧截取视频帧
May 31 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
Python循环实现n的全排列功能
Sep 16 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
海贼王:最美的悬赏令!
2020/03/02 日漫
神族 Protoss 历史背景
2020/03/14 星际争霸
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php中动态修改ini配置
2014/10/14 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Flask之请求钩子的实现
2018/12/23 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
基于python代码批量处理图片resize
2020/06/04 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
.NET方向面试题
2014/11/20 面试题
超市总经理岗位职责
2014/02/02 职场文书
霸王洗发水广告词
2014/03/14 职场文书
卖车协议书
2014/04/21 职场文书
司法建议书范文
2014/05/13 职场文书
大专学生求职自荐信
2014/07/06 职场文书
学校政风行风整改方案
2014/10/25 职场文书
先进教师事迹材料
2014/12/16 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
导游词之山东八大关
2019/12/18 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers