通过循环绘制多个计数图
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.catplot
和kind='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()
【讨论】:
这能回答你的问题吗?以上是关于通过循环绘制多个计数图的主要内容,如果未能解决你的问题,请参考以下文章