图、热量图、三维图以及热图)
//2019.7.14晚
matplotlib七种常见图像输出编程⼤全七种图形汇总输出如下:
import numpy as np #导⼊数据结构nmupy模块
import matplotlib.pyplot as plt #导⼊matplotlib图像输出模块
plt.rcParams[\"font.sans-serif\"]=[\"SimHei\"] #输出图像的标题可以为中⽂正常输出plt.rcParams[\"axes.unicode_minus\"]=False #可以正常输出图线⾥的负号(必会⽤到的导⼊模块)
#1-1散点图输出fig=plt.figure()
fig.add_subplot(3,3,1)n=128
X=np.random.normal(0,1,n) #随机数X的⽣成(⽣成正态分布,平均数为0,⽅差为1,个数为128)Y=np.random.normal(0,1,n) #随机数Y的⽣成(⽣成正态分布,平均数为0,⽅差为1,个数为128)T=np.arctan2(Y,X)
#plt.axes([0.025,0.025,0.95,0.95]) #指定显⽰范围
plt.scatter(X,Y,s=75,c=T,alpha=.5) #画散点图的函数scatter(其中XY表⽰数值的⼤⼩,s表⽰散点的尺⼨⼤⼩,c表⽰颜⾊,alpha表⽰透明度)
plt.xlim(-1.5,1.5),plt.xticks([]) #x和y坐标轴的范围plt.ylim(-1.5,1.5),plt.yticks([]) #x和y坐标轴的范围plt.axis() #显⽰所有图像范围plt.title(\"scatter\")plt.xlabel(\"x\")plt.ylabel(\"y\")
#1-2bar 柱状图fig.add_subplot(3,3,2)n=10
X=np.arange(n) #定义从0-9的数列
Y1=(1-X/float(n))*np.random.uniform(0.5,1.0,n) #定义变量X的计算⽅式Y2=(1-X/float(n))*np.random.uniform(0.5,1.0,n) #定义变量Y的计算⽅式
plt.bar(X,Y1,facecolor=\"#9999ff\编辑输出柱状图的格式(其中facecolor表⽰输出柱状图的颜⾊,edgecolor表⽰边框的颜⾊)
plt.bar(X,-Y2,facecolor=\"#ff9999\编辑输出柱状图的格式
for x,y in zip(X,Y1): #编辑输出柱状图的位置格式(其中0.4表⽰每个柱状图之间的距离,'%.2f'% y表⽰输出⼩数点的位数,ha表⽰数值标注横向对齐,va表⽰柱状图纵向对齐位置)
plt.text(x,y+0.05,'%.2f'% y,ha='center',va=\"bottom\")for x, y in zip(X,Y2):
plt.text(x,-y-0.05,'%.2f'% y,ha='center',va=\"top\")
#Pie1-3(饼图)
fig.add_subplot(3,3,3)n=20
z=np.ones(n)z[-1]=2
plt.pie(z,explode=z*.05,colors=[\"%f\"%(i/float(n)) for i in range(n)],labels=[\"%.2f\"%(i/float(n)) for i in range(n)])
#其中z为原来输⼊的数组,explode表⽰整个扇形距离圆⼼的距离⼤⼩(如果不写默认为0),colors表⽰颜⾊变化,labels表⽰各个扇形的数值⼤⼩(其中2表⽰⼩数位数⼤⼩plt.gca().set_aspect(\"equal\") #圆形plt.xticks([])plt.yticks([])plt.show()
#polar1-4(极坐标图)fig.add_subplot(3,3,4,polar=True) #需要使得polar模块为真Truen=20theta=np.arange(0.0,2*np.pi,2*np.pi/n) #定义⾓度
radii=10*np.random.rand(n) #定义半径plt.plot(theta,radii) #输出折线图
#plt.polar(theta,radii)两种⽅式都可以 #输出极坐标图
#1-5 heatmapfrom matplotlib import cm #输出颜⾊设置模块fig.add_subplot(335)data=np.random.rand(3,3)
cmap=cm.Blues #选择颜⾊系为蓝⾊体系
map=plt.imshow(data,interpolation=\"nearest\设置图像输出时的格式
#1-6 3Dfrom mpl_toolkits.mplot3d import Axes3D #导⼊3D模块fig.add_subplot(336,projection=\"3d\")x=np.random.randint(1,10,10)y=np.random.randint(1,10,10)z=x*2+2*y #函数关系式
plt.plot(x,y,z,\"r\") #输出3D图像
#1-7 hotmap热流图fig.add_subplot(313)def f(x,y):
return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)n=256
x=np.linspace(-3,3,n)y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y) #将xy转换为矩阵#将向量x和y定义的区域转换成矩阵X和Y,其中矩阵X的⾏向量是向量x的简单复制,⽽矩阵Y的列向量是向量y的简单复制#假设x是长度为m的向量,y是长度为n的向量,则最终⽣成的矩阵X和Y的维度都是 nm (注意不是mn)plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot) #输出热流图plt.show()
因篇幅问题不能全部显示,请点此查看更多更全内容