matplotlib画柱状图
柱状图bar柱状图(Bar Chart)是一种以长方形的长度为变量的表达图形的统计报告图,是由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或两个以上的价值(不同时间或者不同条件),只有一个变量,通常适用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。1.主要函数1.1.barpyplot中绘制柱状图的函数为bar,其语法格式如下。 matplotlib.pyplot.bar
柱状图bar
柱状图(Bar Chart)是一种以长方形的长度为变量的表达图形的统计报告图,是由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或两个以上的价值(不同时间或者不同条件),只有一个变量,通常适用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。
1. 主要函数
1.1. bar
pyplot中绘制柱状图的函数为bar,其语法格式如下。
matplotlib.pyplot.bar(x,height,*,align='center',**kwargs)
matplotlib.pyplot.bar(x,height,width,*,align='center',**kwargs)
matplotlib.pyplot.bar(x,height,width,bottom,*,align='center',**kwargs)
函数中的主要参数说明如下。
*■ x:接收array。表示x轴的数据,无默认。
*■ height:接收array。表示x轴所代表数据的数量,无默认。
■ width:接收0~1之间的float,指定柱状图宽度,默认为0.8。
■ bottom:接收array,可选,柱状图的y坐标,默认值为0。
■ align:取值为center或edge,可选,默认为center,表示柱状图对齐x坐标。
■ color:接收特定string或者包含颜色字符串的array,表示柱状图颜色,默认为None。
■ edgecolor:接收特定string或者包含颜色字符串的array,表示柱状图的边框颜色。
*■ tick_label:柱状图的刻度标签
更多参数见下图
2. 例子
2.1. 标准例子
import numpy as np
import matplotlib.pyplot as plt
#导入数据
Emp_data= np.loadtxt('d:\data\Employedpopulation.csv',delimiter = ",",
usecols=(1,2,3,4,5,6,7,8,9,10),dtype=int)
# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
#创建一个绘图对象, 并设置对象的宽度和高度
plt.figure(figsize=(6, 4))
#绘制全部就业人员柱状图
plt.bar(Emp_data[0],Emp_data[1],width = 0.35,color = 'red',
edgecolor = 'white')
#绘制城镇就业人员柱状图
plt.bar(Emp_data[0]+0.35,Emp_data[2],width = 0.35,color = 'green',
edgecolor = 'white')
#绘制乡村就业人员柱状图
plt.bar(Emp_data[0]+0.7,Emp_data[3], width = 0.35,color = 'blue',
edgecolor = 'white')
# 给图加text
X = Emp_data[0];Y1 = Emp_data[1]
for x, y in zip(X, Y1):
plt.text(x + 0.3, y + 0.05, '%i' % y, ha='center')
Y2 = Emp_data[2]
for x, y in zip(X, Y2):
plt.text(x + 0.6, y + 0.05, '%i' % y, ha='center')
Y3 = Emp_data[3]
for x, y in zip(X, Y3):
plt.text(x + 0.9, y + 0.05, '%i' % y, ha='center')
#添加标签
plt.xlabel('年份')
plt.ylabel('人员(万人)')
plt.ylim((30000,80000))
plt.xlim(2006,2017)
plt.title("2007-2016年城镇、乡村和全部就业人员情况柱状图")
#添加图例
plt.legend({'全部就业','城镇就业','乡村就业'})
plt.savefig('d:/data/Employedpopulation_bar.png')
plt.show()
2.2. 简洁例子
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
num_list = [1.5,0.6,7.8,6]
plt.bar(range(len(num_list)), num_list,color=['r','b','g','y'])
plt.show()
2.3. 2个bar左右排列
import matplotlib.pyplot as plt
name_list = ['Monday','Tuesday','Friday','Sunday']
num_list = [1.5,0.6,7.8,6]
num_list1 = [1,2,3,1]
x =list(range(len(num_list)))
total_width, n = 0.8, 2
width = total_width / n
plt.bar(x, num_list, width=width, label='boy',fc = 'y')
for i in range(len(x)):
x[i] = x[i] + width
plt.bar(x, num_list1, width=width, label='girl',tick_label = name_list,fc = 'r')
plt.legend()
plt.show()
2.4. 2个bar上下排列
import numpy as np
import matplotlib.pyplot as plt
n = 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.axes([0.025,0.025,0.95,0.95])
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x,y in zip(X,Y1):
plt.text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
for x,y in zip(X,Y2):
plt.text(x+0.4, -y-0.05, '%.2f' % y, ha='center', va= 'top')
plt.xlim(-.5,n), plt.xticks([])
plt.ylim(-1.25,+1.25), plt.yticks([])
plt.show()
2.5. 2个bar上下
import matplotlib.pyplot as plt
import numpy as np
n = 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,facecolor='r',edgecolor='w')
plt.bar(X,-Y2,facecolor='b',edgecolor='w')
for x,y in zip(X,Y1):
plt.text(x-0.1,y+0.05,'%.2f'%y,ha='center',va='bottom') #居中对齐
for x,y in zip(X,Y2):
plt.text(x+0.1,-y-0.05,'-%.2f'%y,ha='center',va='top')
plt.xlim((-0.5,n))
plt.ylim((-2,2))
plt.xticks(())
plt.yticks(())
plt.show()
更多推荐
所有评论(0)