如何在同一图表中绘制两个列表,但颜色不同?

时间:2017-07-17 23:50:10

标签: python matplotlib

请帮我在同一个图表上绘制两个列表。线条应该是不同的颜色。这是我试过的代码:

import matplotlib.pyplot as plt 
train_X = [1,2,3,4,5] 
train_Y = [10, 20, 30, 40, 50] 
train_Z = [10, 20, 30, 40, 50,25] 
alpha = float(input("Input alpha: ")) 
forecast = [] for x in range(0, len(train_X)+1):  
    if x==0:       
        forecast.append(train_Y[0])  
    else:  
        forecast.append(alpha*train_Y[x-1] + (1 - alpha) * forecast[x-1])
plt.plot(forecast,train_Z,'g') 
plt.show()

3 个答案:

答案 0 :(得分:3)

您应该使用plt.plot两次绘制两行。

我不知道你的X轴是什么,但显然你应该创建另一个数组/列表作为你的X值。

然后使用plt.plot(x_value,forecast, c='color-you-want')plt.plot(x_value,train_z, c='another-color-you-want')

。有关详细信息,请参阅pyplot文档。

答案 1 :(得分:0)

窃取借用另一个答案,这似乎有效:

# plt.plot(forecast,train_Z,'g') # replace this line, with the following for loop

for x1, x2, y1,y2 in zip(forecast, forecast[1:], train_Z, train_Z[1:]):
    if y1 > y2:
        plt.plot([x1, x2], [y1, y2], 'r')
    elif y1 < y2:
        plt.plot([x1, x2], [y1, y2], 'g')
    else:
        plt.plot([x1, x2], [y1, y2], 'b') # only visible if slope is zero

plt.show()

enter image description here

其他答案:python/matplotlib - multicolor line

当然,将'r''g''b'值替换为https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot颜色列表中的任何其他值

答案 2 :(得分:-2)

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,12,15],'g*', [1,4,9,16], 'ro')
plt.show()

这很简单,希望此示例代码会有所帮助。