按 5 年间隔对 Python 小提琴图进行分类
Categorizing Python violin plots by 5-year intervals
我有一个 DataFrame df
:
year count
1982 -10
1983 -3
1984 2
1984 12
1985 4
...
2007 3
2008 10
2009 -1
2009 0
2009 4
(数值随意编辑)
我正在尝试创建一个 x 轴为 year
且 y 轴为 count
的小提琴图,它通过以下方式执行:
fig, ax = plt.subplots(figsize=(13,10))
ax = sns.violinplot(x="year", y='count', ax=ax,
data=df, palette="muted", split=True)
ax.yaxis.grid(True)
ax.set_xlabel('Year')
ax.set_ylabel('Number')
plt.show()
这个returns:
如图所示,这很难解释,因为类别太多。我想将这些年分成 5 年的间隔。我试过类似的东西:
axes.violinplot(dataset = [df[df.year < 1990]["count"].values,
df[df.year > 1990 & df.year < 1996]["count"].values,
df[df.year > 1995 & df.year < 2001]["count"].values,
df[df.year > 2000 & df.year < 2006]["count"].values,
df[df.year > 2005]["count"].values])
但这returns是一个错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如何在我的小提琴图中将 year
数据分组为 5 年的间隔?
如果您根据多个条件从数据框中 select 行,则需要在每个条件两边加上括号:
dataset = [df[df.year < 1990]["count"].values,
df[(df.year > 1990) & (df.year < 1996)]["count"].values,
df[(df.year > 1995) & (df.year < 2001)]["count"].values,
df[(df.year > 2000) & (df.year < 2006)]["count"].values,
df[df.year > 2005]["count"].values]
我有一个 DataFrame df
:
year count
1982 -10
1983 -3
1984 2
1984 12
1985 4
...
2007 3
2008 10
2009 -1
2009 0
2009 4
(数值随意编辑)
我正在尝试创建一个 x 轴为 year
且 y 轴为 count
的小提琴图,它通过以下方式执行:
fig, ax = plt.subplots(figsize=(13,10))
ax = sns.violinplot(x="year", y='count', ax=ax,
data=df, palette="muted", split=True)
ax.yaxis.grid(True)
ax.set_xlabel('Year')
ax.set_ylabel('Number')
plt.show()
这个returns:
如图所示,这很难解释,因为类别太多。我想将这些年分成 5 年的间隔。我试过类似的东西:
axes.violinplot(dataset = [df[df.year < 1990]["count"].values,
df[df.year > 1990 & df.year < 1996]["count"].values,
df[df.year > 1995 & df.year < 2001]["count"].values,
df[df.year > 2000 & df.year < 2006]["count"].values,
df[df.year > 2005]["count"].values])
但这returns是一个错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如何在我的小提琴图中将 year
数据分组为 5 年的间隔?
如果您根据多个条件从数据框中 select 行,则需要在每个条件两边加上括号:
dataset = [df[df.year < 1990]["count"].values,
df[(df.year > 1990) & (df.year < 1996)]["count"].values,
df[(df.year > 1995) & (df.year < 2001)]["count"].values,
df[(df.year > 2000) & (df.year < 2006)]["count"].values,
df[df.year > 2005]["count"].values]