Part_1:直方图 hsit()
函数格式:matplotlib.pyplot.hist(x,bins=None,range=None,density=None,weights=None,
cumulatve=False,bottom=None,histtype=‘bar’,align=‘mid’,orientation=‘vertical’,
rwidth=None,log=False,color=None,label=None,stacked=False,density = False,hold=None,data=None,**kwargs)
参数说明:
kwargs:为字典属性名称/值对
x:接收array。表示x轴的数据,无默认
bins:接收int、序列或auto。表示直方图的长条形数目,可选项。默认为10
range:接收tuple。表示箱子的下部和上部范围,忽略较低和较高的异常值。 如果未提供,则范围为(x.min(),x.max())可选,默认为None
histtype:取值为bar、barstacked、step、stepilled,可选,默认为bar,表示为要绘制的直方图类型。其中,bar是传统的条形直方图,如果给出多个数据,则条形直方图并排排列;barstacked是将多个数据堆叠在一起的条形直方图;
step生成一个默认未填充的线图;
stepfilled生成一个默认填充的线图
align:取值为left、mid、right、可选,默认为mid,用于控制直方图的绘图方式。left表示直方图位于左边框边缘的中心mid表示直方图在bin边缘之间居中;right表示直方图位于右边框的中心
rwidth:接收标量或无,可选,默认值为None表示条形的相对宽度作为箱宽的一部分。如果为none,则自动计算宽度;如果histtype是“step”或者“stepfilled”,则忽略color:接收特定的string或者包含颜色的字符串的array,表示直方图的颜色,默认值为none
edgecolor:接收特定的string或者包含颜色的字符串的array,表示长条形边框的颜色
alpha:接收0~1的小数。表示长条形的透明度,默认为none
density:布尔值,默认值:False.如果 True, 绘制并返回一个概率密度:每个 bin 将显示 bin 的原始计数除以总数 计数 和 bin 宽度( density = counts / (sum(counts) * np.diff(bins))), 使直方图下的面积积分为 1(np.sum(density * np.diff(bins)) == 1)。如果 堆叠 也是 True,直方图的总和是 归一化为 1。
1.1示例:
绘制一个正态分布数据的直方图
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
#设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False
#随机生成10000个满足正态分布的数据
data=np.random.randn(10000)
plt.hist(data,bins=40,density=False,color='red',edgecolor="black",rwidth=0.7,alpha=0.7)
#显示横标签
plt.xlabel('区间')
#显示纵轴标签
plt.ylabel("频数/频率")
#显示图标题
plt.title("频数/频率分布直方图")
plt.show()
Part_2:柱状图 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,bottomalign=‘center’,**kwargs)
参数说明:
x:接收array。表示x轴的数据,无默认
height:接收array。表示x轴所代表数据的数量,无默认
width:接收0~1的float,指定柱状图的宽度,默认为0.8
align:取值为center或edge,可选,默认为center,表示柱状图对齐x坐标
color:接收特定的string或者包含颜色的字符串的array,表示柱状图的色,默认值为none
edgecolor:接收特定的string或者包含颜色的字符串的array,表示柱状图的颜色
2.1示例:
使用不同颜色、不同形状的点,绘制2007——2016年全国就业人员、城镇就业人员和乡村就业人员的柱状图。其中全国就业人员(万人)用红色的柱状表示,城镇就业人员(万人)用绿色柱状来表示,乡村就业人员(万人)用蓝色柱状来表示
import numpy as np
import matplotlib.pyplot as plt
#导入数据
data=np.loadtxt('P:/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(data[0],data[1],width=0.35,color="red",edgecolor="white")
#绘制城镇就业人员折线图
plt.bar(data[0]+0.35,data[2],width=0.35,color="green",edgecolor="white")
#绘制农村就业人员折线图
plt.bar(data[0]+0.7,data[3],width=0.35,color="b",edgecolor="white")
#添加标签
plt.xlabel('年份')
plt.ylabel('人员(万人)')
plt.ylim((30000,80000))
plt.xlim(2006,2019)
plt.title('2007-2016年城镇、乡村、全部就业人员情况柱状图')
#给绘图添加text
X=data[0];Y1=data[1]
for x,y in zip(X,Y1):
plt.text(x+0.3,y+0.05,"%i" % y,ha='center')
Y2=data[2]
for x,y in zip(X,Y2):
plt.text(x+0.6,y+0.05,'%i' % y,ha="center")
Y3=data[3]
for x,y in zip(X,Y3):
plt.text(x+0.9,y+0.05,'%i' % y,ha="center")
#添加图例
plt.legend({"全部就业",'城镇就业','乡村就业'})
plt.savefig('P:/data/Employedpopulation_bar.png')
plt.show()