Python 2.7 python情节中奇怪的粗线条?

Python 2.7 python情节中奇怪的粗线条?,python-2.7,matplotlib,Python 2.7,Matplotlib,我正在python中使用matplotlib.pyplot。考虑y轴是称为“排序丢失”的实际值,x轴是迭代次数(1000)。然后,我绘制了一个算法在每次迭代中运行2次的平均排名损失 有人知道为什么我会得到这个奇怪的厚图表而不是一条线吗 事先非常感谢 命令是: fig = plt.figure() fig.suptitle('Batch-GD', fontsize=20) plt.xlabel('Iteration', fontsize=18) plt.ylabe

我正在python中使用matplotlib.pyplot。考虑y轴是称为“排序丢失”的实际值,x轴是迭代次数(1000)。然后,我绘制了一个算法在每次迭代中运行2次的平均排名损失

有人知道为什么我会得到这个奇怪的厚图表而不是一条线吗

事先非常感谢

命令是:

    fig = plt.figure()
    fig.suptitle('Batch-GD', fontsize=20)
    plt.xlabel('Iteration', fontsize=18)
    plt.ylabel('Avg ranking loss', fontsize=16)
    plt.grid(True)
    plt.xlim(0, iter)
    plt.plot(avg_loss)
    fig.savefig('GD_with_ini.jpg')
    plt.show()

这里发生的事情可能是,线密度太高,以至于线重叠的方式是显示一个平面,而不是线本身

例如,如果我们取10000个点,使绘图以非常高的频率振荡,我们会得到类似的行为。放大显示实际上有一条线

复制绘图的代码:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, mark_inset

x = np.linspace(0,1000,num=10000)
y = np.sin(x*100.)*x/5000.+np.exp(-x/60.)+np.sin(x/50.)*0.016

plt.plot(x,y)

###### show inset ####
ax = plt.gca()
axins = inset_axes(ax, 2,2, loc=1)
axins.plot(x,y)
axins.set_xlim(400, 410)
axins.set_ylim(-0.1, 0.17)
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")

plt.show()
一个解决方案是计算某种滚动平均值。例如:

def running_mean(x, N):
    cumsum = np.cumsum(np.insert(x, 0, 0)) 
    return (cumsum[N:] - cumsum[:-N]) / N 
N=300
cumsum = running_mean(y, N)
ax.plot(x[N//2:-N//2+1], cumsum, c="orange")
axins.plot(x[N//2:-N//2+1], cumsum, c="orange")

您能给我们看一下您的实际绘图命令吗?@suever我想我必须适当地设置y轴的范围。我在问题上添加了代码。请编辑您的问题,并在那里包含代码。
avg_损失
可能只是振荡。如果放大绘图,会发生什么。或者如果您使用
plt.plot(avg_loss,marker=“.”,c=“k”,ls=“”,alpha=0.5)
,会发生什么情况?@ImportanceOfBeingErnest实际上运行需要很长时间,我正在尝试看看会发生什么,并让您知道。谢谢。我再次运行了程序(使用上面评论中的命令)并实现了振荡。采用这种滚动平均值是完美的。非常感谢你。