通过循环绘制多个计数图

Posted

技术标签:

【中文标题】通过循环绘制多个计数图【英文标题】:Plotting multiple countplots via a loop 【发布时间】:2022-01-19 21:10:28 【问题描述】:

我有一个包含不同列的 pandas 数据框,一个是 year,另一个是 doy。我想循环多年(2001 年到 2019 年),并在每年的不同 seaborn 计数图中绘制 doy

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv("file.csv")
print(df.head())

        ID  doy    Year  ...  NA_L1NAME  B_year        number
1772  1774  199    2001  ...        1.1  1934.0  7.942371e+06
1786  1788  160    2002  ...        1.1  1953.0  2.146587e+05
1792  1794  199    2003  ...        1.2  1960.0  2.017792e+07
1801  1803  199    2004  ...        1.3  1968.0  4.293173e+05
1802  1804  195    2005  ...        1.4  1969.0  1.824599e+07

f, axes = plt.subplots(4,5)
for f,ax in zip(AKB.Year, axes.ravel()):
    sns.countplot(AKB.doy, ax = ax)
    ax.set_title(f)

但是,这不起作用。

我该怎么做?

【问题讨论】:

也许你想要一个分面网格seaborn.pydata.org/generated/seaborn.FacetGrid.html 【参考方案1】:

您可以使用sns.catplotkind='count' 创建计数图的 FacetGrid:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(2021)
df = pd.DataFrame('year': np.repeat(np.arange(2001, 2020), 100))
df['doi'] = np.random.randint(180, 200, len(df))

sns.catplot(data=df, kind='count', x='doi', col='year', col_wrap=5,
            height=3, aspect=1.8)
plt.tight_layout()
plt.show()

【讨论】:

这能回答你的问题吗?

以上是关于通过循环绘制多个计数图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 seaborn 中并排绘制两个计数图?

在 R 中使用 for 循环绘制多个图

在单个循环中使用子图绘制多个图形

通过对数据框列中的值进行分组来绘制多个图?

iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?

循环中的 tableView reloadData 不会在每次通过时绘制单元格