matplotlib模块依赖于numpy模块和tkinter模块,可以绘制多种形式的图形,
包括线图、直方图、饼状图、散点图、误差线图等等,图形质量可满足出版要求,是数据可视化的重要工具
Matplotlib模块:
1.绘制正弦余弦曲线
import numpy as np
import matplotlib.pyplot as pl
x = np.arange(0, 3 * np.pi, 0.1)
y=np.sin(x)
z=np.cos(x)
pl.title("sin-cos")
pl.plot(x,y,label='sin')
pl.plot(x,z,label='cos')
pl.plot(x, y)
pl.show()
2.绘制散点图
>>> import numpy as np
>>> import matplotlib.pyplot as pl
>>> a=np.arange(0,2.0*np.pi,0.1)
>>> b=np.cos(a)
>>> pl.scatter(a,b)
<matplotlib.collections.PathCollection object at 0x09A0A210>
>>> pl.show()
>>> import numpy as np
>>> import matplotlib.pylab as pl
>>> x=np.random.random(100)
>>> y=np.random.random(100)
>>> pl.scatter(x,y,s=x*500,c=u'r',marker=u'*')
<matplotlib.collections.PathCollection object at 0x09FF10F0>
>>> pl.show()
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y,"ob")
plt.show()
3.绘制饼状图
import numpy as np
import matplotlib.pyplot as plt
labels='frogs','hogs','dogs','logs'
sizes=[15,30,45,10]
colors=['yellowgreen','gold','#FF0000','lightcoral']
explode=(0,0.1,0,0.1)
fig=plt.figure()
ax=fig.gca()
ax.pie(np.random.random(4),explode=explode,labels=labels,colors=colors,
autopct='% 1.1f% %',shadow=True,startangle=90,redius=0.25,
center=(0,0),frame=True)
ax.pie(np.random.random(4),explode=explode,labels=labels,colors=colors,
autopct='% 1.1f% %',shadow=True,startangle=90,redius=0.25,
center=(1,1),frame=True)
ax.pie(np.random.random(4),explode=explode,labels=labels,colors=colors,
autopct='% 1.1f% %',shadow=True,startangle=90,redius=0.25,
center=(0,1),frame=True)
ax.pie(np.random.random(4),explode=explode,labels=labels,colors=colors,
autopct='% 1.1f% %',shadow=True,startangle=90,redius=0.25,
center=(1,0),frame=True)
ax.set_xticks([0,1])
ax.set_yticks([0,1])
ax.set_xtickslabels(['sunny','cloudy'])
ax.set_ytickslabels(['day','rainy'])
ax.set_xlim((-0.5,1.5))
ax.set_ylim((-0.5,1.5))
ax.set_aspect('equal')
4.使用pyplot绘制多个图形在一起显示
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,500)
y=np.sin(x)
z=np.cos(x*x)
plt.figure(figsize=(8,4))
plt.plot(x,y,label='%sin(x)$',color='red',linewidth=2)
plt.plot(x,z,'b--',label='%cos(x^2)$')
plt.xlabel('time(s)')
plt.ylabel('volt')
plt.title('sin--cos figure using pyplot')
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()
5.使用pyplot绘制,多个图形单独显示
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,500)
y1=np.sin(x)
y2=np.cos(x)
y3=np.sin(x*x)
plt.figure(1)
ax1=plt.subplot(2,2,1)
ax2=plt.subplot(2,2,2)
ax3=plt.subplot(2,1,2)
plt.sca(ax1)
plt.plot(x,y1,color='red')
plt.ylim(-1.2,1.2)
plt.sca(ax2)
plt.plot(x,y2,'b--')
plt.ylim(-1.2,1.2)
plt.sca(ax3)
plt.plot(x,y1,'g--')
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()
import numpy as np
import matplotlib.pyplot as plt # 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x) # 建立 subplot 网格,高为 2,宽为 1 # 激活第一个subplot
plt.subplot(2, 1, 1) # 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine') # 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine') # 展示图像
plt.show()
6.绘制三锥图形
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x,y=np.mgrid[-2:2:20j,-2:2:20j]
z=50*np.sin(x+y)
ax=plt.subplot(111,projection='3d')
ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.Blues_r)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
rho,theta=np.mgrid[0:1:40j,0:2*np.pi:40j]
z=rho*2
x=rho*np.cos(theta)
y=rho*np.sin(theta)
ax=plt.subplot(111,projection='3d')
ax.plot_surface(x,y,z)
plt.show()
7.绘制三锥曲线
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
mpl.rcParams['legend.fontsize']=10
fig=plt.figure()
ax=fig.gca(projection='3d')
theta=np.linspace(-4*np.pi,4*np.pi,100)
z=np.linspace(-4,4,100)*0.3
r=z**3+1
x=r*np.sin(theta)
y=r*np.cos(theta)
ax.plot(x,y,z,label='parametric curve')
ax.legend()
plt.show()
8.柱状图
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x, y, align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()