绘制不同长度的数组

Ros*_*one 5 python matplotlib

我正在绘制三种不同算法的误差与迭代次数.它们需要不同数量的迭代来计算,因此数组的长度不同.但我想在同一块情节上绘制所有三条线.目前,当我使用以下代码时出现此错误:

import matplotlib.pyplot as plt

plt.plot(ks, bgd_costs, 'b--', sgd_costs, 'g-.', mbgd_costs, 'r')
plt.title("Blue-- = BGD, Green-. = SGD, Red=MBGD")
plt.ylabel('Cost')
plt.xlabel('Number of updates (k)')
plt.show()
Run Code Online (Sandbox Code Playgroud)

错误:

    plt.plot(ks, bgd_costs, 'b--', sgd_costs, 'g-.', mbgd_costs, 'r')
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/pyplot.py", line 2995, in plot
    ret = ax.plot(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/axes/_axes.py", line 1331, in plot
    for line in self._get_lines(*args, **kwargs):
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/axes/_base.py", line 312, in _grab_next_args
    for seg in self._plot_args(remaining[:isplit], kwargs):
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/axes/_base.py", line 281, in _plot_args
    x, y = self._xy_from_xy(x, y)
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/axes/_base.py", line 223, in _xy_from_xy
    raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
Run Code Online (Sandbox Code Playgroud)

UPDATE

感谢@ ibizaman的回答,我制作了这个情节: 在此输入图像描述

ibi*_*man 8

如果我没有弄错的话,使用类似你的情节绘制3个图形,每个图形ksxbgd_costs,sgd_costs以及mbgd_costs3个不同的y.你显然需要xy具有相同的长度和你一样,并且错误说,情况并非如此.

为了使其工作,您可以添加"保持"并拆分图表的显示:

import matplotlib.pyplot as plt

plt.hold(True)
plt.plot(bgds, bgd_costs, 'b--')
plt.plot(sgds, sgd_costs, 'g-.')
plt.plot(mgbds, mbgd_costs, 'r')
plt.title("Blue-- = BGD, Green-. = SGD, Red=MBGD")
plt.ylabel('Cost')
plt.xlabel('Number of updates (k)')
plt.show()
Run Code Online (Sandbox Code Playgroud)

注意不同的x轴.

如果您不添加暂停,则每个绘图将首先删除该图.