2014-03-02 4 views
3

세 가지 알고리즘에 대한 반복 횟수와 반복 횟수를 플로팅합니다. 그것들은 계산하기 위해 다른 수의 반복을 취하므로 배열의 길이가 다릅니다. 그러나 나는 같은 줄거리에 세 줄을 모두 그려야한다.다른 길이의 플롯 배열

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

오류 : 나는 다음과 같은 코드를 사용하면 현재 내가이 오류 @ ibizaman의 대답에

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 

UPDATE

감사합니다,이 플롯을 만들어 : enter image description here

답변

6

난 당신이 3 그래프와 각각의 플롯을했던 것처럼 플롯을 사용하여 틀리지 않는 경우, ks 3 다른 예로서 X 및 bgd_costs, sgd_costsmbgd_costs있다. 당신은 분명 같은 길이를 가지고 X와 y이 필요하고 당신을 좋아하고 오류는 그렇지 않다 말한다.

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

참고 다른 X 축 :

당신이 "보류"및 분할 플롯의 표시를 추가 할 수 있습니다, 그것이 작동되도록합니다. 당신이 보류를 추가하지 않으면

, 모든 플롯 먼저 그림을 지워집니다.