实验二、数据处理之Matplotlib
一、实验目的
1. 了解matplotlib库的基本功能
2. 掌握matplotlib库的使用方法
二、实验工具:
1. Anaconda
2. Numpy,matplotlib
三、Matplotlib简介
Matplotlib 包含了几十个不同的模块, 如 matlab、mathtext、finance、dates 等,而 pylot 则是我们最常用的绘图模块
四、实验内容
1.绘制正弦曲线,并设置标题、坐标轴名称、坐标轴范围
2.同一坐标系中绘制多种曲线并通过样式、宽度、颜色加以区分
3.绘制多轴图,即将多幅子图绘制在同一画板。
4.直方图的绘制(数据自己定义)
5.绘制散点图
6.绘制盒状图
7.选做题(尝试matplotlib库的其它功能,如2D,3D等)
五、实验总结(写出本次实验的收获,遇到的问题等)
本次实验熟悉了Matplotlib的使用和常见图形绘制方法,Matplotlib 包含了几十个不同的模块, 如 matlab、mathtext、finance、dates 等,而 pylot 则是我们最常用的绘图模块。
在实验过程中,绘制盒状图时遇到了问题,对于盒图的参数设置和boxplot方法的应用都很陌生,导致出现了多次错误。
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False
正弦曲线图
x=np.arange(0,2*np.pi,0.01)
y=np.sin(x)
plt.plot(x,y)
plt.title(u'正弦曲线',fontdict={'size':20})
plt.xlabel(u'弧度',fontdict={'size':16})
plt.ylabel(u'正弦值',fontdict={'size':16})
plt.axis([-0.1*np.pi,2.1*np.pi,-1.1,1.1])
plt.show()
多条曲线文本标注和图例
x=np.linspace(-4,4,200)
f1=np.power(10,x)
f2=np.power(np.e,x)
f3=np.power(2,x)
plt.plot(x, f1,'r', ls='-', linewidth=2, label='$10^x$')
plt.plot(x, f2,'b', ls='--', linewidth=2, label='$e^x$')
plt.plot(x, f3,'g', ls=':', linewidth=2, label='$2^x$')
plt.axis([-4,4,-0.5,8])
plt.text(1,7.5,r'$10^x$',fontsize=16)
plt.text(2.2,7.5,r'$e^x$',fontsize=16)
plt.text(3.2,7.5,r'2^x',fontsize=16)
plt.title('幂函数曲线',fontsize=16)
plt.legend(loc='upper left')
plt.show()
绘制多轴图
plt.subplot(221)
plt.axis([-1,2,-1,2])
plt.axhline(y=0.5,color='b')
plt.axhline(y=0.5,xmin=0.25,xmax=0.75,color='r')
plt.subplot(222)
plt.axis([-1,2,-1,2])
plt.axvline(x=0,ymin=0,linewidth=4,color='r')
plt.axvline(x=1.0,ymin=-0.5,ymax=0.5,linewidth=4,color='g')
plt.subplot(212)
plt.axis([-1,2,-1,2])
plt.axvspan(1.25,1.55,facecolor='g',alpha=0.5)
plt.axvspan(0.25,0.75,facecolor='0.5',alpha=0.5)
data=np.random.normal(5.0,3.0,1000)
plt.hist(data)
bins=np.arange(-5,16,1)
plt.hist(data,bins)
plt.show()
散点图
x=np.random.rand(50)
y=np.random.rand(50)
area=np.pi*(15*np.random.rand(50))**2
color=2*np.pi*np.random.rand(50)
plt.scatter(x,y,s=area,c=color,alpha=0.5,cmap=plt.cm.hsv)
plt.show()
3d
x, y = np.mgrid[-2:2:50j, -2:2:50j]
z = x * np.exp(-x ** 2 - y ** 2)
ax = plt.subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=2, cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
盒图
all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]
fig = plt.figure(figsize=(8, 6))
plt.boxplot(all_data,
notch=False, # box instead of notch shape
sym='rs', # red squares for outliers
vert=True) # vertical box aligmnent
plt.xticks([y + 1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])
plt.xlabel('measurement x')
t = plt.title('Box plot')
plt.show()