代码之家  ›  专栏  ›  技术社区  ›  LostinSpatialAnalysis

无法使用seaborn更改python中的条形图宽度

  •  0
  • LostinSpatialAnalysis  · 技术社区  · 2 年前

    我有以下代码,试图使用seaborn在python中制作条形图,简单地基于两列数据帧,其中有一个“Category”列和一个带有浮点值的“Value”列:

    dataplot = sns.barplot(x = 'Category',
                y = 'Value',
                data = df, hue='Category')
    

    这将生成一个条形图,其中包含非常细的条形,同时包含正值和负值。我想把钢筋做得更厚/更宽,所以我试着用 width 参数,然后我尝试:

    dataplot = sns.barplot(x = 'Category',
                y = 'Value',
                data = df, hue='Category', width=2)
    

    我只是在这里测试2作为宽度的值,但我得到了一个我不理解的错误:

    TypeError: bar() got multiple values for argument 'width'
    

    我不明白这些多个值指的是什么。我如何才能正确地输入 宽度 参数添加到我的条形图代码中,这样我就可以简单地使条形图更厚吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   rsenne    2 年前

    好吧,所以我使用了seaborn的测试数据集,并能够重现与您相同的错误。。。老实说,这真的让我很困惑,因为我也无法解决问题。但是,与此同时,我找到了一个可以使用的解决问题的方法。

    width = 0.5
    penguins= sns.load_dataset("penguins")
    dataplot = sns.barplot(data=penguins, y="body_mass_g", x='island')
    for bar in dataplot.patches:
        x = bar.get_x()
        width = bar.get_width()
        centre = x + width / 2.
        bar.set_x(centre - width / 2.)
        bar.set_width(width)  # set new width to 0.5
    

    你应该能够在你的代码中使用这个,尽管我再次感到困惑,为什么你一开始就遇到这个错误。