在2Y轴上堆叠多个图

时间:2019-04-11 09:55:52

标签: matplotlib plot spyder

我正在尝试在2年绘图中绘制多个绘图。

我有以下代码:

  • 具有文件列表以获取一些数据;
  • 获取数据的x和y分量以在y轴1和y轴2上绘制;
  • 绘制数据。

当循环迭代时,它会绘制在不同的图形上。我想在同一图中得到所有图。 谁能在这方面给我一些帮助?

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
file=[list of paths]

for i in files:

 # Loads Data from an excel file
    data = pd.read_excel(files[i],sheet_name='Results',dtype=float)

 # Gets x and y data from the loaded files
    x=data.iloc[:,-3]
    y1=data.iloc[:,-2]
    y12=data.iloc[:,-1]
    y2=data.iloc[:,3]

    fig1=plt.figure()
    ax1 = fig1.add_subplot(111)    
    ax1.set_xlabel=('x')
    ax1.set_ylabel=('y')

    ax1.plot(x,y1)
    ax1.semilogy(x,y12)

    ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis
    ax2.plot(x,y2)

    fig1.tight_layout()  

    plt.show()








1 个答案:

答案 0 :(得分:1)

您应该在循环外实例化图形,然后在迭代时添加子图。这样,您将拥有一个图形以及其中的所有图形。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
files=[list of paths]

fig1=plt.figure()

for i in files:

 # Loads Data from an excel file
    data = pd.read_excel(files[i],sheet_name='Results',dtype=float)

 # Gets x and y data from the loaded files
    x=data.iloc[:,-3]
    y1=data.iloc[:,-2]
    y12=data.iloc[:,-1]
    y2=data.iloc[:,3]

    ax1 = fig1.add_subplot(111)    
    ax1.set_xlabel=('x')
    ax1.set_ylabel=('y')

    ax1.plot(x,y1)
    ax1.semilogy(x,y12)

    ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis
    ax2.plot(x,y2)

    fig1.tight_layout()  

    plt.show()