【问题标题】:separate plot for every categorical value using sns使用 sns 为每个分类值单独绘制图
【发布时间】:2020-02-25 17:19:26
【问题描述】:

我可以找到两种方法,一种是使用 seaborn 快速显示多个图,一种是使用 pairplots,第二种是使用 facetgrid。但是我想要的是有一种快速的方法来为列中的每个分类值创建一个单独的图(而不为每个分类值创建单独的数据框)但是上述两种方法都没有提供我正在寻找的输出.由于我不想为我的图创建单独的数据框,并且希望为每个单独的值单独绘制图,所以我想知道完成此操作的快速方法。

在这张图片中,我只有 1 个图,所以我想要 masterkard、Chinapay、viza 和 carte rouge 的单独图(不创建单独的数据框)

【问题讨论】:

  • 使用 FacetGrid 实际上更容易、更快捷,但如果您愿意,可以遍历 df.groupby("x_column") 并在每个循环步骤中创建一个图。

标签: python python-3.x matplotlib data-visualization seaborn


【解决方案1】:

正如您在评论中提到的,这应该有效:

g = sns.FacetGrid(transactions, col="Processed Card Scheme")
g.map(sns.barplot,'Status','Transaction amount')

还是这样的?

import matplotlib.pyplot as plt
cardschemes = transactions['Processed Card Scheme'].values.unique()
fig, axs = plt.subplots(ncols=len(cardschemes))
for i, scheme in enumerate(cardschemes):
    sns.barplot(x="Status", 
                y="Transaction amount", 
                data=transactions[transactions['Processed Card Scheme'] == scheme],
                ax=axs[i])

顺便说一句,如果您使用minimum reproducible example 会更容易回答问题。

【讨论】:

  • 所以唯一的方法是使用循环?我可以使用 FacetGrid 获得相同的输出吗?
【解决方案2】:

您可以使用以下代码:

fig = plt.figure(figsize=(20,14))
ax1 = fig.add_subplot(131)
ax1 = fig.add_subplot(132)
ax1 = fig.add_subplot(133)

在我的例子中,它在水平轴上产生了三个数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多