matplotlib模块数据可视化-多图

来源:互联网 发布:淘宝上回收手机可靠吗 编辑:程序博客网 时间:2024/06/08 08:09

1 源码

import numpy as npimport matplotlib.pyplot as pltplt.figure()# 1> 第一个小图 表示总共有两行,该行只有一列,在位置1处画图plt.subplot(2,1,1)n = 12x = np.arange(n)# np.random.uniform(0.5,1.0,n),生成n个0.5-1.0之间的随机数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,width=0.8,facecolor="#9999ff",edgecolor="white")plt.bar(x,-y2,facecolor="#ff9999",edgecolor="white")# 绘制文字,显示柱状图形的值for x,y1,y2 in zip(x,y1,y2):    plt.text(x+0.4,y1+0.05,'%.2f' % y1,ha='center',va='bottom')    plt.text(x+0.4,-(y2+0.05),'%.2f' % y2,ha='center',va='top')# for x,y in zip(x,y2):#     plt.text(x+0.4,-(y+0.05),'%.2f' % y,ha='center',va='bottom')plt.ylim(-1.25,1.25) # 2> 第二个小图# 也可以不加逗号,表示总共两行,该行有两列,在位置3处绘图,位置2是第一行的后面,但是第一行画了一个图,序号仍保留# 等等,发现了什么? 为什么是位置3?绘图位置是从1开始,总序号为列数最多的*总行数,并且编号上按行数*最大列数编号plt.subplot(223)z = [10,20,30,40,50]explode = [0, 0.2, 0, 0, 0]labels = ('Frogs', 'Hogs', 'Dogs', 'Logs','Cats')plt.pie(z, explode=explode, labels=labels,startangle=90,autopct='%1.1f%%',        shadow=True, pctdistance=0.8)plt.axis('equal')# 3> 第三个小图plt.subplot(2,2,4)three = np.linspace(-np.pi,np.pi,256,endpoint=True)# print threey_c,y_s=np.cos(three),np.sin(three)plt.plot(three,y_c,color="blue",linewidth=2.5,linestyle="-")plt.plot(three,y_s,color="red",linewidth=2.5,linestyle="-")plt.xlim(three.min() * 1.1,three.max()*1.1)# 设置坐标轴上的显示刻度,前面的实际刻度位置,后面为要显示的内容,最后一个参数为内容旋转plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"$-\pi$",r"$-\pi/2$",r"$0$",r"$+\pi/2$",r"$+\pi$"],rotation=17)plt.ylim(y_c.min()*1.1,y_c.max()*1.1)plt.yticks([-1,0,1],[r"$-1$",r"$0$",r"$+1$"])plt.show()

2 效果图


原创粉丝点击