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)

文章图片
基本用法
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()#显示图像

文章图片
多个直方图并列显示 通过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()#显示图像

文章图片
显示直方图上的数值
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()#显示图像

文章图片
多个直方图堆叠显示 通过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()#显示图像

文章图片
水平直方图 通过 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()#显示图像

文章图片
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()

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

文章图片
添加数据标签
#添加数据标签
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')

文章图片
bar(left, height, width=0.8, bottom=None, **kwargs)
事实上,
left
,height
,width
,bottom
这四个参数确定了柱体的位置和大小。默认情况下,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()

文章图片
设置柱体样式 颜色
通过
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()

文章图片
堆叠柱状图
通过
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()

文章图片
并列柱状图
绘制并列柱状图与堆叠柱状图类似,都是绘制多组柱体,只需要控制好每组柱体的位置和大小即可。
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()

文章图片
条形图
使用
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 柱状图】plt.barh 方法的签名为:
barh(bottom, width, height=0.8, left=None, **kwargs)
可以看到与 plt.bar 方法类似。因此堆积条形图和并列条形图的画法与前面类似,