【问题标题】:Multiple plots in one figure in PythonPython中的一个图形中的多个绘图
【发布时间】:2014-02-10 19:56:55
【问题描述】:

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

但是我得到一个一个单独的单独的图。任何人都可以帮我弄清楚我的代码有什么问题吗?为什么我不能制作多线图?非常感谢!

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    编辑:我再次阅读您的问题后才意识到,我没有回答您的问题。您想在同一个图中输入多条线。但是,我会保留它,因为这多次对我很有帮助。我希望有一天你会发现有用

    我在学习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
    

    请咨询docs 以获取更多帮助和示例。这一点我为自己打了一次,并且非常基于/复制自文档。希望它有所帮助......我记得在#$% 中熟悉一个图中不同大小的图的切片表示法是一件痛苦的事。之后我认为这很简单:)

    【讨论】:

      【解决方案2】:

      这很简单:

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

      您可以根据需要多次添加plt.plot。至于line type,需要先指定颜色。所以对于蓝色,它是b。对于普通线路,它是-。一个例子是:

      plt.plot(total_lengths, sort_times_heap, 'b-', label="Heap")
      

      【讨论】:

      【解决方案3】:

      由于我没有足够高的声誉来发表评论,我将在 2 月 20 日 10:01 回答 liang question 作为对原始问题的回答。

      为了让行标签显示,您需要将 plt.legend 添加到您的代码中。 以前面的示例为基础,该示例还包括标题、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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-13
        • 2020-09-15
        • 2017-01-29
        • 2017-01-29
        • 2017-09-13
        • 2020-09-18
        • 2021-01-18
        • 1970-01-01
        相关资源
        最近更新 更多