如何通过循环遍历数据框列列表创建一组自动子图

我想创建高效的代码,在其中我可以将一组数据框列传递给 for 循环或列表推导式,它将根据 matplotlib 或 seaborn 的类型返回一组相同类型的子图(每个变量一个)我想使用的情节。我正在寻找一种对图形类型相对不可知的方法。


我只尝试使用 matplotlib 创建代码。下面,我提供了一个简单的数据框和我尝试过的最新代码。


import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

df = pd.DataFrame({"A": [1, 2,8,3,4,3], "B": [0, 2,4,8,3,2], "C": [0, 0,7,8,2,1]},

                 index =[1995,1996,1997,1998,1999,2000] )

df.index.name='Year'


fig, axs = plt.subplots(ncols=3,figsize=(8,4))

for  yvar in df:

    ts = pd.Series(yvar, index = df.index)

    ts.plot(kind = 'line',ax=axs[i])

    plt.show()

我希望看到传递给循环的每个变量的子图。


呼如林
浏览 266回答 2
2回答

千巷猫影

这是你想要的import pandas as pdimport matplotlib.pyplot as pltdf = pd.DataFrame({"A": [1, 2,8,3,4,3], "B": [0, 2,4,8,3,2], "C": [0, 0,7,8,2,1]},                 index =[1995,1996,1997,1998,1999,2000] )plt.figure(figsize=(10,10))for i, col in enumerate(df.columns):    plt.subplot(1,3,i+1)    plt.plot(df.index, df[col], label=col)    plt.xticks(df.index)    plt.legend(loc='upper left')plt.show()用于plt.subplot(no_of_rows, no_of_cols, current_subplot_number)将当前绘图设置为子绘图。任何绘图完成都会去 current_subplot_number。

皈依舞

同时循环遍历列和轴。在循环外显示绘图。fig, axs = plt.subplots(ncols=len(df.columns), figsize=(8,4))for ax, yvar in zip(axs.flat, df):    df[yvar].plot(ax=ax)plt.show()或者,您也可以直接绘制完整的数据框fig, axs = plt.subplots(ncols=len(df.columns), figsize=(8,4))df.plot(subplots=True, ax=axs)plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python