1.对数图
对数图的纵轴连续值之间有固定的“比例”,这被称作对数标度,以下代码绘制了对数函数图形
from matplotlib import pyplot as plt
import numpy as np
x=np.linspace(1,10)
print(x)
y=[10**el for el in x]
print(y)
fig,ax=plt.subplots()
ax.set_yscale('linear')
ax.plot(x,y,color='blue')
ax.grid(True)
plt.show()
可见,使用线性标度展示对数函数图形时,函数值变化率不大的两个部分难以呈现图形的细节。
因此,根据一般经验,当要展示的数量级跨越较大,或是要展示数据的变化率,或是数据分布存在正偏态时,可以使用对数标度
只需将代码红的这一行
ax.set_yscale('linear')
改为
ax.set_yscale('log')
即可使用对数标度展示该对数函数图形。该对数函数在对数标度下呈现为直线,可被观察到更多的细节 结果如下:
2.频谱图
频谱图是随时间变化的频谱变现,显示了信号频谱强度随时间变化的趋势,往往用于将声音或其他信号的频谱以可视化方式展现出来。通常,频谱图使用横轴表示时间,纵轴表示频率,第三维度使用颜色表示频率-时间的幅值。以下代码使用specgram()函数绘制了频谱图
import wave
import matplotlib.pyplot as plt
import numpy as np
import os
f=wave.open('.wav','rb')#可以找个wav文件试下
params=f.getparams()
nchannels,sampwidth,framerate,nframes=params[:4]
strData=f.readframes(nframes)
waveData=np.fromstring(strData,dtype=np.int16)
waveData=waveData*1.0/(max(abs(waveData)))
waveData=np.reshape(waveData,[nframes,nchannels]).T
f.close()
plt.specgram(waveData[0],Fs=framerate,scale_by_freq=True,sides='default')
plt.ylabel('Frequency(Hz)')
plt.xlabel('Time(s)')
plt.show()
3.矢量场流线图
在矢量场中,每个点除了有坐标值,还有方向。一般使用流线图展示矢量场的可视化流态,如磁力,力场或是流体运动等。在流线图中,使用线条长度或密度表示强度,使用指向特定方向的箭头表示矢量方向。以下代码使用streamplot()函数绘制了流线图
import numpy as np
import matplotlib.pyplot as plt
w=3
Y,X=np.mgrid[-w:w:100j,-w:w:100j]
print(Y)
# print(X)
U=-1-X**2+Y
V=1+X-Y**2
speed=np.sqrt(U*U,V*V)
fig,ax=plt.subplots()
ax.streamplot(X,Y,U,V,density=[0.5,1])
ax.set_title('Varying Density')
plt.show()
4.绘制两个变量间的互相关图形
互相关是指从两个不同的观察结果中得到的两个不同数据集合之间的相关情况,一般通过交叉关联查看其是否以某种方式相匹配,或是在一个较大的数据样本中寻找一个较小的数据样本。
自相关一般用于表示一个给定的时间序列在一个连续的时间间隔上与自身延迟之间的相似度,常用于检测数据的随机性。
以下代码使用xcorr()函数绘制了互相关图形,使用acorr()函数绘制了自相关图形
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
x,y=np.random.randn(2,100)
fig=plt.figure()
ax1=fig.add_subplot(211)
ax1.xcorr(x,y,usevlines=True,maxlags=50,normed=True,lw=2)
ax1.grid(True)
ax1.axhline(0,color='black',lw=2)
ax2=fig.add_subplot(212,sharex=ax1)
ax2.acorr(x,usevlines=True,normed=True,maxlags=50,lw=2)
ax2.grid(True)
ax2.axhline(0,color='black',lw=2)
plt.show()
以上就是Matplotlib绘制的几个高级图形,欢迎大家点赞收藏啊 有问题可以一起讨论
感谢!!