Matplotlib:Bar 柱状图

bar(left, height, width=0.8, bottom=None, **kwargs)

# left为x轴的位置序列,一般采用arange函数产生一个序列; # height为y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据; # width为柱形图的宽度,一般这是为1即可;color为柱形图填充的颜色; # align设置plt.xticks()函数中的标签的位置; # yerr让柱形图的顶端空出一部分。 # color设置柱状的颜色 # alpha 设置柱状填充颜色的透明度 大于0 小于等于1 # linewidth 线条的宽度 #bottom bottom决定了柱子距离x轴的高度,默认为None,即表示与x轴距离为0

atplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=https://www.it610.com/article/None, **kwargs)
Matplotlib:Bar 柱状图
文章图片

基本用法
import pandas as pd import matplotlib.pyplot as plt #读取数据 datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx' data = https://www.it610.com/article/pd.read_excel(datafile) plt.figure(figsize=(10,5))#设置画布的尺寸 plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小 plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小 plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小 #alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例; plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = 0.8,facecolor = 'deeppink', edgecolor = 'darkblue', lw=1, label='Jay income') plt.legend(loc=2)#图例展示位置,数字代表第几象限 plt.show()#显示图像

Matplotlib:Bar 柱状图
文章图片

多个直方图并列显示 通过bar() 中的 width 参数来调节:
import pandas as pd import matplotlib.pyplot as plt #读取数据 datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx' data = https://www.it610.com/article/pd.read_excel(datafile) plt.figure(figsize=(10,5))#设置画布的尺寸 plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小 plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小 plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小 width_val = 0.4 #若显示 n 个柱状图,则width_val的值需小于1/n ,否则柱形图会有重合 #alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例; plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val,facecolor = 'deeppink', edgecolor = 'deeppink', lw=1, label='Jay income') plt.bar(data['时间']+width_val,data['收入_JJ'], alpha=0.6,width = width_val,facecolor = 'darkblue', edgecolor = 'darkblue', lw=1, label='JJ income') plt.legend(loc=2)#图例展示位置,数字代表第几象限 plt.show()#显示图像

Matplotlib:Bar 柱状图
文章图片

显示直方图上的数值
import pandas as pd import matplotlib.pyplot as plt #读取数据 datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx' data = https://www.it610.com/article/pd.read_excel(datafile) plt.figure(figsize=(10,5))#设置画布的尺寸 plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小 plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小 plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小 width_val = 0.4 #若显示 n 个柱状图,则width_val的值需小于1/n ,否则柱形图会有重合 #alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例; rects_Jay = plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val, facecolor = 'deeppink', label='Jay income') rects_JJ = plt.bar(data['时间']+width_val,data['收入_JJ'], alpha=0.6,width = width_val, facecolor = 'darkblue',label='JJ income') # 添加数据标签 就是矩形上面的数值 def add_labels(rects): for rect in rects: height = rect.get_height() plt.text(rect.get_x() + rect.get_width()/2, height, height, ha='center', va='bottom') rect.set_edgecolor('white') add_labels(rects_Jay) add_labels(rects_JJ) plt.legend(loc=2)#图例展示位置,数字代表第几象限 plt.show()#显示图像

Matplotlib:Bar 柱状图
文章图片

多个直方图堆叠显示 通过bar() 中的 bottom 参数来调节:
import pandas as pd import matplotlib.pyplot as plt #读取数据 datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx' data = https://www.it610.com/article/pd.read_excel(datafile) plt.figure(figsize=(10,5))#设置画布的尺寸 plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小 plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小 plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小 #通过bottom使得两个柱状图堆叠显示,且没有交叉 #alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例; plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val,facecolor = 'deeppink', edgecolor = 'deeppink', lw=1, label='Jay income') plt.bar(data['时间'],data['收入_JJ'], bottom=data['收入_Jay'], alpha=0.6,width = width_val,facecolor = 'darkblue', edgecolor = 'darkblue', lw=1, label='JJ income') plt.legend(loc=2)#图例展示位置,数字代表第几象限 plt.show()#显示图像

Matplotlib:Bar 柱状图
文章图片

水平直方图 通过 barh() 函数实现,与 bar() 函数的主要区别是:在 bar() 函数中,width 这一参数代表的是柱子的宽度(胖瘦),而在 barh() 函数中 width 这一参数代表的是横向柱子的长度(长短),在下面代码中,width = data[‘收入_Jay’]。
Matplotlib 中绘制水平柱状图(直方图、条形图)的函数为 barh() ,使用语法如下:
matplotlib.pyplot.barh(y, width, height=0.8, left=None, *, align=‘center’, **kwargs)
import pandas as pd import matplotlib.pyplot as plt #读取数据 datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx' data = https://www.it610.com/article/pd.read_excel(datafile) plt.figure(figsize=(10,5))#设置画布的尺寸 plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小 plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小 plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小 #alpha:透明度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例; plt.barh(data['时间'],data['收入_Jay'], alpha=0.6, facecolor = 'deeppink', edgecolor = 'deeppink', label='Jay income') plt.legend(loc=4)#图例展示位置,数字代表第几象限 plt.show()#显示图像

Matplotlib:Bar 柱状图
文章图片

import matplotlib.pyplot as plt import numpy as npn = 12 X = np.arange(n) Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)plt.bar(X, +Y1) plt.bar(X, -Y2)plt.xlim(-.5, n)plt.ylim(-1.25, 1.25) #隐藏坐标轴刻度数字 plt.xticks(()) plt.yticks(()) #移动坐标轴 # ax=plt.gca() # ax.spines['bottom'].set_position(('data',0))plt.show()

Matplotlib:Bar 柱状图
文章图片

#加颜色和数据: plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white') plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')

Matplotlib:Bar 柱状图
文章图片

添加数据标签
#添加数据标签 for x, y in zip(X, Y1): # ha: horizontal alignment # va: vertical alignment plt.text(x , y + 0.05, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2): # ha: horizontal alignment # va: vertical alignment plt.text(x , -y - 0.05, '%.2f' % y, ha='center', va='top')

Matplotlib:Bar 柱状图
文章图片

bar(left, height, width=0.8, bottom=None, **kwargs)
事实上,leftheightwidthbottom这四个参数确定了柱体的位置和大小。默认情况下,left为柱体的居中位置(可以通过align参数来改变left值的含义),即:
  • (left - width / 2, bottom)为左下角位置
  • (left + width / 2, bottom + height)为右上角位置
data = https://www.it610.com/article/[5, 20, 15, 25, 10] plt.bar([0.3, 1.7, 4, 6, 7], data, width=0.6, bottom=[10, 0, 5, 0, 5]) plt.show()

Matplotlib:Bar 柱状图
文章图片

设置柱体样式 颜色
通过facecolor(或fc)关键字参数可以设置柱体颜色
plt.bar(range(len(data)), data, fc='g')

通过 color 关键字参数 可以一次性设置多个颜色
plt.bar(range(len(data)), data, color='rgb') # or `color=['r', 'g', 'b']`

设置tick label
设置x轴刻度(tick_label)用labels = [‘Tom’, ‘Dick’, ‘Harry’, ‘Slim’, ‘Jim’]显示
import matplotlib.pyplot as pltdata = https://www.it610.com/article/[5, 20, 15, 25, 10] labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']plt.bar(range(len(data)), data, tick_label=labels) plt.show()

Matplotlib:Bar 柱状图
文章图片

堆叠柱状图
通过 bottom参数,可以绘制堆叠柱状图。
size = 5 x = np.arange(size) a = np.random.random(size) b = np.random.random(size) #自定义label labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim'] plt.bar(x, a, label='a',tick_label=labels) plt.bar(x, b, bottom=a, label='b') plt.legend() plt.show()

Matplotlib:Bar 柱状图
文章图片

并列柱状图
绘制并列柱状图与堆叠柱状图类似,都是绘制多组柱体,只需要控制好每组柱体的位置和大小即可。
size=5 x=np.arange(size) a=np.random.random(size) b=np.random.random(size) c=np.random.random(size)total_width,n=0.8,3 width=total_width/n x=x-(total_width-width)/2plt.bar(x,a,width=width,label='a') plt.bar(x+width,b,width=width,label='b') plt.bar(x+2*width,c,width=width,label='c')plt.legend() plt.show()

Matplotlib:Bar 柱状图
文章图片

条形图
使用barh 方法绘制条形图
import matplotlib.pyplot as pltdata = https://www.it610.com/article/[5, 20, 15, 25, 10]plt.barh(range(len(data)), data) plt.show()

Matplotlib:Bar 柱状图
文章图片

【Matplotlib:Bar 柱状图】plt.barh 方法的签名为:
barh(bottom, width, height=0.8, left=None, **kwargs)
可以看到与 plt.bar 方法类似。因此堆积条形图和并列条形图的画法与前面类似,

    推荐阅读