python matplotlib 图上 x 轴上的起始值不匹配
Mismatched start values on x-axis on python matplotlib plot
我正在尝试在读取波形文件后绘制选定数量的样本。我写了下面的代码来实现:
import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import read
(fs, x) = read('/home/sk_he/sounds/sample.wav')
M = 501
start_time = 0.2
start_sample = int(start_time * fs)
stop_sample = int(start_time * fs) + M
x1 = x[start_sample:stop_sample]
stop_time = float(stop_sample/fs)
tx1 = np.linspace(start_time, stop_time, M)
plt.plot(tx1, x1)
这给了我以下输出:
虽然这很好,但我打算指示从 0.2 秒到 M
样本结束的任何时间的时间。我也已将 start
和 stop
值正确地赋给了 linspace
。但该图的第一个值仍然是 0.0
而不是 0.2
。如何修复上述代码中的这个错误,使其在 x 轴上正确地从 0.2
而不是 0.0
开始?
问题出在类型转换完成的地方。我修改了代码,它按预期显示了输出:
start_time = 0.2
start_sample = start_time * fs
stop_sample = (start_time * fs) + M
x1 = x[int(start_sample):int(stop_sample)]
stop_time = float(stop_sample/fs)
tx1 = np.linspace(start_time, stop_time, M)
下图是正确的预期输出:
我正在尝试在读取波形文件后绘制选定数量的样本。我写了下面的代码来实现:
import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import read
(fs, x) = read('/home/sk_he/sounds/sample.wav')
M = 501
start_time = 0.2
start_sample = int(start_time * fs)
stop_sample = int(start_time * fs) + M
x1 = x[start_sample:stop_sample]
stop_time = float(stop_sample/fs)
tx1 = np.linspace(start_time, stop_time, M)
plt.plot(tx1, x1)
这给了我以下输出:
虽然这很好,但我打算指示从 0.2 秒到 M
样本结束的任何时间的时间。我也已将 start
和 stop
值正确地赋给了 linspace
。但该图的第一个值仍然是 0.0
而不是 0.2
。如何修复上述代码中的这个错误,使其在 x 轴上正确地从 0.2
而不是 0.0
开始?
问题出在类型转换完成的地方。我修改了代码,它按预期显示了输出:
start_time = 0.2
start_sample = start_time * fs
stop_sample = (start_time * fs) + M
x1 = x[int(start_sample):int(stop_sample)]
stop_time = float(stop_sample/fs)
tx1 = np.linspace(start_time, stop_time, M)
下图是正确的预期输出: