我有兩個數組。一個是長度爲(1000,)的原始信號,另一個是長度爲(100,)的平滑信號。我想直觀地表示平滑信號如何表示原始信號。由於這些陣列的長度不同,我無法將它們疊加在一起。有沒有辦法在matplotlib中這樣做?繪製兩個不同長度的數組
謝謝!
我有兩個數組。一個是長度爲(1000,)的原始信號,另一個是長度爲(100,)的平滑信號。我想直觀地表示平滑信號如何表示原始信號。由於這些陣列的長度不同,我無法將它們疊加在一起。有沒有辦法在matplotlib中這樣做?繪製兩個不同長度的數組
謝謝!
作爲rth suggested,定義
x1 = np.linspace(0, 1, 1000)
x2 = np.linspace(0, 1, 100)
然後繪製原料與X1,和平滑與X2:
plt.plot(x1, raw)
plt.plot(x2, smooth)
np.linspace(0, 1, N)
返回長度N
與等間隔的值的數組從0到1(包括的)。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(2015)
raw = (np.random.random(1000) - 0.5).cumsum()
smooth = raw.reshape(-1,10).mean(axis=1)
x1 = np.linspace(0, 1, 1000)
x2 = np.linspace(0, 1, 100)
plt.plot(x1, raw)
plt.plot(x2, smooth)
plt.show()
產量
你需要這份工作的兩個不同的x軸。您不能在一個單獨的繪圖中繪製具有不同長度的兩個變量。
import matplotlib.pyplot as plt
import numpy as np
y = np.random.random(100) # the smooth signal
x = np.linspace(0,100,100) # it's x-axis
y1 = np.random.random(1000) # the raw signal
x1 = np.linspace(0,100,1000) # it's x-axis
fig = plt.figure()
ax = fig.add_subplot(121)
ax.plot(x,y,label='smooth-signal')
ax.legend(loc='best')
ax2 = fig.add_subplot(122)
ax2.plot(x1,y1,label='raw-signal')
ax2.legend(loc='best')
plt.suptitle('Smooth-vs-raw signal')
fig.show()
你不能繪製兩個不同長度的陣列。也許你可以使用兩個不同的'x-axes'分別繪製它們 – ThePredator
定義兩者的_x_值。 – wwii
你需要爲兩者定義一個不同的'x'向量。例如,'x1 = np.linspace(0,1,len(signal1))','x2 = np.linspace(0,1,len(signal2))',然後將它們繪製爲'plt.plot(x1, signal1)','plt.plot(x2,signal2)' – rth