Python中一个图形中的多个绘图

Python中一个图形中的多个绘图,python,matplotlib,plot,Python,Matplotlib,Plot,我是python新手,正在尝试使用matplotlib在同一个图形中绘制多条线。 Y轴的值存储在字典中,在下面的代码中,我在X轴中生成相应的值 我的代码如下: for i in range(len(ID)): AxisY= PlotPoints[ID[i]] if len(AxisY)> 5: AxisX= [len(AxisY)] for i in range(1,len(AxisY)): AxisX.append(AxisX[i-1]-1) pl

我是python新手,正在尝试使用matplotlib在同一个图形中绘制多条线。 Y轴的值存储在字典中,在下面的代码中,我在X轴中生成相应的值

我的代码如下:

for i in range(len(ID)):
AxisY= PlotPoints[ID[i]]
if len(AxisY)> 5:
    AxisX= [len(AxisY)]
    for i in range(1,len(AxisY)):
        AxisX.append(AxisX[i-1]-1)
    plt.plot(AxisX,AxisY)
    plt.xlabel('Lead Time (in days)')
    plt.ylabel('Proportation of Events Scheduled')
    ax = plt.gca()
    ax.invert_xaxis()
    ax.yaxis.tick_right()
    ax.yaxis.set_label_position("right")
    plt.show()

但我得到的是单独的数字,一个接一个。谁能帮我找出我的代码有什么问题吗?为什么我不能生成多行打印?非常感谢

这非常简单:

import matplotlib.pyplot as plt

plt.plot(<X AXIS VALUES HERE>, <Y AXIS VALUES HERE>, 'line type', label='label here')
plt.plot(<X AXIS VALUES HERE>, <Y AXIS VALUES HERE>, 'line type', label='label here')
plt.legend(loc='best')
plt.show()
编辑:在再次阅读您的问题后,我才意识到我没有回答您的问题。要在同一绘图中输入多行。不过,我还是不说了,因为这让我多次受益匪浅。我希望有一天你会觉得有用

我在不久前学习python时发现了这一点

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure() 
# create figure window

gs = gridspec.GridSpec(a, b)
# Creates grid 'gs' of a rows and b columns 


ax = plt.subplot(gs[x, y])
# Adds subplot 'ax' in grid 'gs' at position [x,y]


ax.set_ylabel('Foo') #Add y-axis label 'Foo' to graph 'ax' (xlabel for x-axis)


fig.add_subplot(ax) #add 'ax' to figure
您也可以在一个图形中制作不同的尺寸,在这种情况下使用切片:

 gs = gridspec.GridSpec(3, 3)
 ax1 = plt.subplot(gs[0,:]) # row 0 (top) spans all(3) columns

有关更多帮助和示例,请参阅。这一小段我自己打过一次,也是基于文档的。希望对你有帮助。。。我记得在$%中,在一个图中熟悉不同大小图的切片表示法是一件痛苦的事情。之后,我认为这很简单:

因为我没有足够高的声誉来评论,所以我将在2月20日10:01回答梁的问题,作为对原始问题的回答

为了使线标签显示,您需要将plt.legend添加到代码中。 要基于上面的示例(其中还包括title、ylabel和xlabel),请执行以下操作:

import matplotlib.pyplot as plt

plt.plot(<X AXIS VALUES HERE>, <Y AXIS VALUES HERE>, 'line type', label='label here')
plt.plot(<X AXIS VALUES HERE>, <Y AXIS VALUES HERE>, 'line type', label='label here')
plt.title('title')
plt.ylabel('ylabel')
plt.xlabel('xlabel')
plt.legend()
plt.show()

OP表示每个绘图元素覆盖上一个,而不是合并到单个绘图中。即使有其他答案提出的众多建议之一,这种情况也可能发生。如果选择几行并一起运行,请说:

plt.plot(<X>, <Y>)
plt.plot(<X>, <Z>)
打印元素通常会一起渲染,一层在另一层之上。但如果逐行执行代码,每个绘图都将覆盖上一个绘图


这可能就是OP的情况。我刚刚遇到了:我设置了一个新的键绑定,通过在spyder上按一个键来执行代码,但我的键绑定只执行当前行。解决方案是按整个块选择行或运行整个文件

您可以从这里获得更多信息->@liang,您必须包含图例。我已经编辑了答案,以便标签也能显示出来。
plt.plot(<X>, <Y>)
plt.plot(<X>, <Z>)