3)演示说明
① 绘制不同饮料类型构成的饼图
plt.figure(dpi=100) x1 = np.array([6,10,11,8,15]) x = x1/np.sum(x1) labels = ["果汁","矿泉水","绿茶","其它","碳酸饮料"] colors=["r", "g", "b", "y", "m"] explode = [0.05,0,0,0,0] plt.pie(x,labels=labels,colors=colors,autopct="%.0f%%", explode=explode,startangle=90,counterclock=False) plt.axis("equal") plt.savefig("不同饮料类型构成的饼图",dpi=300)
结果如下:
② 绘制环形图:以绘制三环形为例
操作如下:
plt.figure(figsize=(8,5),dpi=100) x1 = [3496.57,1161.55,1251.09,1961.07] x2 = [1383.36,775.09,595.09,1605.61] x3 = [3756.56,1623.36,1730.51,3255.94] labels = ["劳动者报酬","生产税金额","固定资产折旧","营业盈余"] colors=['pink','greenyellow','lightcoral','cyan'] plt.pie(x1,colors=colors,autopct="%.0f%%",radius=1.3, wedgeprops=dict(width=0.3,edgecolor="w"), startangle=90,counterclock=False,pctdistance = 0.9) plt.pie(x2,colors=colors,autopct="%.0f%%",radius=1, wedgeprops=dict(width=0.3,edgecolor="w"), startangle=90,counterclock=False,pctdistance = 0.85) plt.pie(x3,colors=colors,autopct="%.0f%%",radius=0.7, wedgeprops=dict(width=0.3,edgecolor="w"), startangle=90,counterclock=False,pctdistance = 0.75) plt.legend(labels=labels,loc="best",title="生产总值构成") plt.title("生产总值构成的环形图") plt.axis("equal") plt.savefig("生产总值构成的环形图",dpi=300)
结果如下:
6、绘制直方图
① 语法格式
plt.pie(x,y,height,color,edgecolor,width=0.8,bottom=None,align=“center”)
② 参数说明
x 表示要绘图的数据。
labels 每个部分显示的标签。
explode 指定每个部分距离圆心的偏移量(单位为半径的长度)。
colors 指定每个部分的颜色。
autopct 设置每个部分显示的比例值(格式化)。
counterclock 是否逆时针绘图。默认为True。
startangle 初始绘图点位置(逆时针偏移x轴的角度),默认为偏移0度(x轴)。
shadow 是否含有阴影,默认为False。(用处不大)
③ 演示说明
df = pd.read_excel(r"C:\Users\黄伟\Desktop\matplotlib.xlsx",sheet_name="直方图") def func(x): if x>=140 and x<150: return "(140,150]" elif x>=150 and x<160: return "(150,160]" elif x>=160 and x<170: return "(160,170]" elif x>=170 and x<180: return "(170,180]" elif x>=180 and x<190: return "(180,190]" elif x>=190 and x<200: return "(190,200]" elif x>=200 and x<210: return "(200,210]" elif x>=210 and x<220: return "(210,220]" elif x>=220 and x<230: return "(220,230]" elif x>=230 and x<240: return "(230,240]" df["分组"] = df["销售量"].apply(func) df1 = df.groupby("分组")["销售量"].count() df1 = pd.DataFrame(df1) df1 = df1.reset_index() df1["频率"] = df1["销售量"].apply(lambda x:x/np.sum(df1["销售量"])) df1["频率"] = df1["频率"].apply(lambda x:"{:.2%}".format(x)) plt.figure(figsize=(6,5),dpi=100) plt.hist(df["销售量"],bins=[140,150,160,170,180,190,200,210,220,230,240],edgecolor='white',color="pink") x = np.array([140,150,160,170,180,190,200,210,220,230,240]) plt.xticks(x+5,["{}-{}".format(x,x+10) for x in range(140,231,10)],rotation=90) plt.yticks(np.arange(0,31,5)) for z in zip(x+2.5,df1["销售量"]): plt.annotate("{}".format(z[1]),xy=z,color="black") plt.tight_layout() plt.savefig("某电脑公司销售量分布的直方图",dpi=300)
结果如下: