绘制两个不同长度的不同阵列

时间:2015-06-23 12:44:15

标签: python numpy matplotlib plot

我有两个数组。一个是长度(1000,)的原始信号,另一个是长度(100,)的平滑信号。我想直观地表示平滑信号如何表示原始信号。由于这些数组的长度不同,我无法将它们绘制成另一个。有没有办法在matplotlib中这样做?

谢谢!

2 个答案:

答案 0 :(得分:8)

作为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()

的产率 enter image description here

答案 1 :(得分:1)

这项工作需要两个不同的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()

enter image description here