PythonMatplotlibE
上一章介绍了Matplotlib绘图一些通用的设置,以折线图为例,本章我们就介绍一下其他的图形,直方图、条形图、饼图、散点图、极坐标图的原理和用法。
一、直方图直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵向表示分布情况。
直方图是数值分布的精确图形表示,这是一个连续变量的概率分布的估计。为了构建直方图,第一步是将值得范围分段,即将整个值得范围分为一系列间隔,然后计算每个间隔中有多少值。间隔必须相邻,且通常是相等的大小。
hist()
bins:可以是一个bins数量的整数值,也可以是表示bin的一个序列。默认是10
normed:如果是True,直方图的图作归一化处理,形成概率密度,默认为FALSE
color:指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色。
orientation:通过设置为horizontal创建水平直方图。默认值为vertical
#首先导入我们需要的数据,通常会先进行数据处理importpandasaspdimportmatplotlib.pyplotaspltdf=pd.read_excel(rC:\Users\\Desktop\test.xlsx,sheet_name=Sheet1)df
对上半年的各款项进行一个直方图的绘制
#选取上半年的数据df1=df[上半年]#bins是我想将数据分为10份,range是横轴的坐标范围,color是颜色plt.hist(df1,bins=10,range=(,),color=blue)
如结果所示,两个array数组,第一个表示数量,第二个表示范围,即-之间有8个,-之间有11个,一次类推。。。
如果想显示数值,hist函数中没有封装响应的参数,需要手动进行添加,使用plt.text函数
df1=df[上半年]arr=plt.hist(df1,bins=10,range=(,),color=blue)#将每一个数值添加到响应的直方图上方foriinrange(10):plt.text(arr[1][i]+20,arr[0][i]+0.2,str(arr[0][i]))二、条形图
条形图的原理不用多说,大家都知道,介绍一下用法,使用bar函数。
importpandasaspdimportmatplotlib.pyplotaspltdf=pd.read_excel(rC:\Users\\Desktop\test.xlsx,sheet_name=Sheet2)df
#绘制条形图的大小,宽度和颜色plt.figure(figsize=(10,6))x=df[月份]y=df[年]plt.rcParams[font.sans-serif]=MicrosoftYaHei#设置微软雅黑字体plt.bar(x,y,width=0.6,color=red)
如果想绘制水平的条形图,使用barh函数
plt.figure(figsize=(10,6))x=df[月份]y=df[年]plt.rcParams[font.sans-serif]=MicrosoftYaHei#设置微软雅黑字体plt.barh(x,y,0.7,color=red)
如果每个条形都想显示不一样的颜色,那么可以对color进行设置
importnumpyasnp#随机生成12个数组构成12种不同额颜色plt.bar(x,y,width=0.7,color=np.random.rand(12,3))
如果想加上标签,就想上面的直方图那样
plt.bar(x,y,width=0.7,color=np.random.rand(12,3))fora,binzip(x,y):plt.text(a,b+20,b,ha=center)三、饼图
饼图的原理也不用多说,下面介绍其用法
首先将A、B、C三个公司上半年的数据进行汇聚,算出上半年和下半年的业绩总和
importpandasaspdimportmatplotlib.pyplotaspltdf=pd.read_excel(rC:\Users\\Desktop\test.xlsx,sheet_name=Sheet1)df2=df.groupby([公司名称])[上半年,下半年].sum()df3=df2.reset_index()df3
使用上半年的数据制作饼图,并设置常用的参数
plt.figure(figsize=(6,6))#autopct是百分比的格式,explode是只是哪一块分离,shadow是是否显示阴影,#startangle是其实角度,pctdistance和labeldistance是百分比和标签离圆心的举例plt.pie(df3[上半年],labels=df3[公司名称],autopct=%0.2f%%,colors=[red,blue,yellow],explode=[0,0,0.1],shadow=True,startangle=90,pctdistance=0.5,labeldistance=1.2)#由于没有调节字体大小的参数,所以设置全局参数大小plt.rcParams[font.size]=15#横纵相等,为圆形plt.axis(equal)plt.show()四、散点图
散点图的原理也很简单,查看数据分布情况,使用scatter函数。
importnumpyasnpimportmatplotlib.pyplotaspltplt.scatter(np.random.randn(),np.random.randn(),color=np.random.rand(,3),marker=d)五、极坐标图
极坐标图可以通过条形图和散点图变化而来,只需要设置为polar就可以了
1、绘制极坐标柱状图
importnumpyasnpimportmatplotlib.pyplotaspltplt.figure(figsize=(9,6))x=np.linspace(0,2*np.pi,8)y=np.random.randint(0,,8)plt.bar(x,y,color=np.random.rand(8,3))
importnumpyasnpimportmatplotlib.pyplotaspltplt.figure(figsize=(9,9))plt.axes(polar=True)plt.bar(x,y,color=np.random.rand(8,3))
2、绘制极坐标散点图
importnumpyasnpimportmatplotlib.pyplotaspltplt.figure(figsize=(9,9))r=2*np.random.rand()x=2*np.pi*np.random.rand()plt.axes(polar=True)plt.scatter(x,r,color=np.random.rand(,3),s=*r*2,cmap=cool,alpha=0.8)江苏吴彦祖
转载请注明:http://www.sonphie.com/jbjc/12665.html