为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2021-12-16 14:51:11
我想创建高效的代码,在其中我可以将一组数据框列传递给 for 循环或列表推导式,它将根据 matplotlib 或 seaborn 的类型返回一组相同类型的子图(每个变量一个)我想使用的情节。我正在寻找一种对图形类型相对不可知的方法。我只尝试使用 matplotlib 创建代码。下面,我提供了一个简单的数据框和我尝试过的最新代码。import pandas as pdimport matplotlib.pyplot as plt%matplotlib inlinedf = 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()我希望看到传递给循环的每个变量的子图。
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这是你想要的


import pandas as pd

import matplotlib.pyplot as plt

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


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

//img1.sycdn.imooc.com//61bae2120001fe0005920578.jpg

用于plt.subplot(no_of_rows, no_of_cols, current_subplot_number)将当前绘图设置为子绘图。任何绘图完成都会去 current_subplot_number


查看完整回答
反对 回复 2021-12-16
?
皈依舞

TA贡献1851条经验 获得超3个赞

同时循环遍历列和轴。在循环外显示绘图。


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


查看完整回答
反对 回复 2021-12-16
  • 2 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号