【问题标题】:How add seaborn plots to subplots如何将 seaborn 地块添加到子地块
【发布时间】:2021-09-30 10:46:52
【问题描述】:

我尝试创建子图并在其中添加 seaborn 图,但结果为空,我只是将所有结果作为子图后的唯一图。

我使用那个代码

fig, axes = plt.subplots(2, 3, figsize=(40, 20), sharey=True, dpi=160)

cols = [color for name, color in mcolors.CSS4_COLORS.items()]
cols = [cols[2]] + [cols[7]] + cols[9:12] + cols[14:18] + cols[19:]

companies = data['name'].value_counts()[:6].index

for i, ax in enumerate(axes.flatten()):
    company_data = data[data['name'] == companies[i]]

    data_viz = company_data.groupby(['year', 'lda_cluster']).agg({'Publication Number': 'count'}).reset_index()

    sns.catplot(data=data_viz, x='year', y='Publication Number', hue='lda_cluster', 
            ax=ax, kind='bar', height=10, aspect=1.5)
    ax.set_title(f'{companies[i]}')

plt.show()

这是我的结果

等等

我该如何解决这个问题?

【问题讨论】:

  • 你试过使用 sns.set() 吗?
  • @Zephyrus 不,我怎么在这里使用它?

标签: python matplotlib seaborn subplot


【解决方案1】:

sns.catplot 返回一个 FacetGrid,它本身就是一个图形。您没有提供任何示例数据,但我认为您可以使用 kind="count" 实现您的目标

companies = list(data["name"].value_counts().nlargest(6).index)

g = sns.catplot(
    x="year",
    col="name",
    col_wrap=3,
    data=data[data["name"].isin(companies)],
    kind="count",
    height=10,
    aspect=1.5,
)

g.set_axis_labels(y_var="Publication Number")
g.set_titles(col_template="{col_name}")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多