【问题标题】:Creating a bar plot using Seaborn使用 Seaborn 创建条形图
【发布时间】:2015-07-09 17:34:14
【问题描述】:

我正在尝试使用 seaborn 绘制条形图。样本数据:

x=[1,1000,1001]
y=[200,300,400]
cat=['first','second','third']
df = pd.DataFrame(dict(x=x, y=y,cat=cat))

当我使用时:

sns.factorplot("x","y", data=df,kind="bar",palette="Blues",size=6,aspect=2,legend_out=False);

生成的图是

当我添加图例时

sns.factorplot("x","y", data=df,hue="cat",kind="bar",palette="Blues",size=6,aspect=2,legend_out=False);

生成的图形如下所示

如您所见,条形图从值偏移。我不知道如何获得与第一个图中相同的布局并添加图例。

我不一定与 seaborn 相关,我喜欢调色板,但任何其他方法都适合我。唯一的要求是图看起来像第一个并且有图例。

【问题讨论】:

  • 您的“当我添加图例时”代码行没有添加图例。
  • 您可以通过 sns.color_palete("Blues", 3) 获取该调色板中的颜色。
  • 不错的提示,@mwaskom!我会将其添加到下面的答案中。

标签: matplotlib seaborn


【解决方案1】:

看起来这个问题出现在这里 - 来自文档searborn.factorplot

色调:字符串,可选

数据中用于按颜色分割图的变量名称。在 ``kind=”bar 的情况下,这也会影响 x 轴上的位置。

所以,既然 seaborn 使用 matplotlib,你可以这样:

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

x=[1,1000,1001]
y=[200,300,400]
sns.set_context(rc={"figure.figsize": (8, 4)})
nd = np.arange(3)
width=0.8
plt.xticks(nd+width/2., ('1','1000','1001'))
plt.xlim(-0.15,3)
fig = plt.bar(nd, y, color=sns.color_palette("Blues",3))
plt.legend(fig, ['First','Second','Third'], loc = "upper left", title = "cat")
plt.show()

添加了@mwaskom 获取三种sns颜色的方法。

【讨论】:

    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2021-11-13
    • 2021-07-26
    • 2020-06-29
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多