How can I plot separate Pandas DataFrames as subplots?

后端 未结 9 1991
离开以前
离开以前 2020-11-22 17:00

I have a few Pandas DataFrames sharing the same value scale, but having different columns and indices. When invoking df.plot(), I get separate plot images. what

相关标签:
9条回答
  • 2020-11-22 17:51

    You can manually create the subplots with matplotlib, and then plot the dataframes on a specific subplot using the ax keyword. For example for 4 subplots (2x2):

    import matplotlib.pyplot as plt
    
    fig, axes = plt.subplots(nrows=2, ncols=2)
    
    df1.plot(ax=axes[0,0])
    df2.plot(ax=axes[0,1])
    ...
    

    Here axes is an array which holds the different subplot axes, and you can access one just by indexing axes.
    If you want a shared x-axis, then you can provide sharex=True to plt.subplots.

    0 讨论(0)
  • 2020-11-22 17:52

    You can use this:

    fig = plt.figure()
    ax = fig.add_subplot(221)
    plt.plot(x,y)
    
    ax = fig.add_subplot(222)
    plt.plot(x,z)
    ...
    
    plt.show()
    
    0 讨论(0)
  • 2020-11-22 17:54

    You can plot multiple subplots of multiple pandas data frames using matplotlib with a simple trick of making a list of all data frame. Then using the for loop for plotting subplots.

    Working code:

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    # dataframe sample data
    df1 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    df2 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    df3 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    df4 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    df5 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    df6 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
    #define number of rows and columns for subplots
    nrow=3
    ncol=2
    # make a list of all dataframes 
    df_list = [df1 ,df2, df3, df4, df5, df6]
    fig, axes = plt.subplots(nrow, ncol)
    # plot counter
    count=0
    for r in range(nrow):
        for c in range(ncol):
            df_list[count].plot(ax=axes[r,c])
            count=+1
    

    Using this code you can plot subplots in any configuration. You need to just define number of rows nrow and number of columns ncol. Also, you need to make list of data frames df_list which you wanted to plot.

    0 讨论(0)
提交回复
热议问题