Matplotlib滑动窗口没有正确绘图

时间:2017-04-29 21:16:35

标签: python-3.x matplotlib

我有一个代码在一个范围内(即300)平均运行滚动窗口(30)

所以我有10个平均值,但他们用1-10对比蜱,而不是每个30的窗口间隔。

我能让它看起来正确的唯一方法是将其绘制(len(windowlength)),但x轴不对。

有没有办法手动分隔结果?

enter image description here

windows30 = (sliding_window(sequence, 30))                                         

Overall_Mean = mean(sequence)                                         

fig, (ax) = plt.subplots()  
plt.subplots_adjust(left=0.07, bottom=0.08, right=0.96, top=0.92, wspace=0.20, hspace=0.23)

ax.set_ylabel('mean (%)')
ax.set_xlabel(' Length')  # axis titles
ax.yaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.5)
ax.plot(windows30, color='r', marker='o', markersize=3)
ax.plot([0, len(sequence)], [Overall_Mean, Overall_Mean], lw=0.75)


plt.show()

1 个答案:

答案 0 :(得分:0)

根据我的理解,你有一个长度为300的列表,但内部只有10个值。如果是这种情况,您可以使用以下解决方案从None列表中删除windows30的其他值。

代码演示:

import numpy as np
import random
import matplotlib.pyplot as plt

# Generating the list of Nones and numbers
listofzeroes = [None] * 290
numbers = random.sample(range(50), 10)
numbers.extend(listofzeroes)

# Removing Nones from the list
numbers = [value for value in numbers if value is not None]  
step = len(numbers)
x_values = np.linspace(0,300,step)  # Generate x-values

plt.plot(x_values,numbers, color='red', marker='o')

这是一个有效的例子,相关代码是在第二条评论之后。

输出:

example-image

上述代码将独立于列表中Nones所在的位置。我希望这能解决你的问题。