使用Matplotlib制作“条形图”:

使用Matplotlib制作“条形图”:pyplot.bar(x, height, width, bottom, tick_label, label, **kwargs)
原创牛奶没法用 最后发布于2019-08-16 19:33:47 阅读数 627  收藏
展开
本文将介绍绘制条形图plt.bar()的方法,主要内容:

(1)绘制条形图,纵向,横向两种标示方式;
(2)一图绘制两组数据(和其他图不同的是,条形图绘制两组数据还涉及到bar宽度的计算)
(3)显示误差柱
(4)单条柱的颜色渲染

1. 纵向图形
plt.bar(x, height, width, bottom, **kwargs)
1
 参数 x,height,width,bottom,align:确定了柱体的位置和宽度
(1)参数(x, height)定义在什么位置上,多高的bar(注意X的值和X轴区别)
(2)参数 width 定义bar的宽度
(3)参数 bottom 定义bar的其实高度(常用于用堆叠的方式展示两组数据)

import matplotlib.pyplot as plt
X = [0.3, 1.7, 4, 6, 7]
height = [5, 20, 15, 25, 10]

plt.bar(X, height, width=0.6, bottom=[10, 0, 5, 0, 5] )
plt.show()
1
2
3
4
5
6

注意:这个图中,X轴上X的值是没有标示出来的!!

 tick_label 参数:在X轴上标示X的“值”
import matplotlib.pyplot as plt

labels = ['0.3', '1.7', '4.0','6.0','7.0']

X = [0.3, 1.7, 4, 6, 7]
height = [5, 20, 15, 25, 10]
height2 = [10, 0, 5, 0, 5]

plt.bar(X, height, width=0.6, bottom=height2,tick_label=labels )
plt.bar(X, height2, width=0.6)
plt.show()
1
2
3
4
5
6
7
8
9
10
11

注意:这个图中,两组数据没有标示出来区别!!

 两组数据对比的条形图+label参数+plt.legend():需要控制好每组柱体的位置和大小
iimport matplotlib.pyplot as plt

drinks = ["cappuccino", "latte", "chai", "americano", "mocha", "espresso"]
sales1 =  [91, 76, 56, 66, 52, 27]
sales2 = [65, 82, 36, 68, 38, 40]

# 如果两句plt.bar()都写tick_label参数,则后面一句会覆盖前面一句,即展示在“b”柱下
x=np.arange(6)
plt.bar(x, sales1,  width=0.35, label='a',tick_label=drinks)
plt.bar(x + 0.35, sales2, width=0.35, label='b')

plt.legend()
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13


 bar颜色和填充参数
(1)facecolor(或fc) 关键字参数可以设置柱体颜色
(2)通过 color 关键字参数 可以一次性设置多个颜色
(3)hatch 关键字可用来设置填充样式,可取值为: / , \ , | , - , + , x , o , O , . , *

 bar 描边参数:
(1)edgecolor 或 ec
(2)linestyle 或 ls
(3)linewidth 或 lw

 误差柱:plt.bar()中其他参数
(1)参数yerr:误差值
(2)参数capsize:展示出来的误差I图形中上下两横线的长度

from matplotlib import pyplot as plt

drinks = ["cappuccino", "latte", "chai", "americano", "mocha", "espresso"]
ounces_of_milk = [6, 9, 4, 0, 9, 0]
error = [0.6, 0.9, 0.4, 0, 0.9, 0]

plt.bar(range(len(drinks)), ounces_of_milk, yerr=error, capsize=5)
plt.show()
1
2
3
4
5
6
7
8


2. 横向图形
plt.barh(bottom, width, height, left=None, **kwargs)
1
需要注意的是:
(1)参数(bottom, width)实际上就是(x,height)只是将XY轴互换
(2)参数 height 定义bar的“厚度”即宽度
————————————————
 

你可能感兴趣的:(使用Matplotlib制作“条形图”:)