【问题标题】:Facetgrid in seaborn customizing colours in legendSeaborn中的Facetgrid在图例中自定义颜色
【发布时间】:2020-07-29 18:07:13
【问题描述】:

我在数据框中有 4 列:国家、城市、年份和温度。我想像使用此命令一样制作情节:

g =sns.FacetGrid(grouped,col='Country',hue='City', col_wrap=3)
g = g.map(plt.plot,"year", "AverageTemperatureCelsius")

现在我可以添加一个图例:

g.add_legend(title='$\\bf{City}$',handlelength=1,prop={'size': 16})

导致这样的情节:

但我希望传奇是国家,这意味着我希望标签是:

label=['Brazil', 'France',    'Japan',  'New Zealand', 'Poland', 'South Africa','Sweden', 'Ukraine']

在每个子图上都会有一种颜色,我怎样才能做到这一点?

我追求的结果:

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    设置hue=None 应该使所有子图都具有相同的颜色,并更改图例以显示您的列数据。

    “hue”参数选择要在子图中强调的数据子集,文档here

    编辑:如果你想保留色调参数,但让它绘制所有相同的颜色,你可以使用关键字参数。

    colors = {'colors': ['b']} 
    g =sns.FacetGrid(grouped,col='Country',hue='City',hue_kws= colors, col_wrap=3)
    

    然后修复图例,this answer 说得非常好。

    【讨论】:

    • 但我希望每个城市的线条是分开的,这就是我使用色调的目的。如果我省略色调,我最终会用一行表示国家/地区。
    • 好的,我为此进行了编辑,但我的更改不会得到您想要的图例。然而 Seaborn 的图例只是 Matplotlib 对象,所以它们是可定制的。我链接到一个应该对此有所帮助的答案。
    • 感谢您的努力,但我的问题仍然存在,我希望每个子图都有自己的颜色。您提出每个子图的方式都有一种颜色。
    • 如果你将 'hue' 和 'col' 都设置为 'Country',它会根据国家为子图着色。但是,这可能会丢失您所追求的数据中的定义。如果这不起作用,请告诉我,我会尝试弄清楚您需要如何直接自定义子图。
    • 是的,这无济于事,因为结果忘记了城市。这意味着我在每个子图中得到一条线。我将添加结果应该是什么样子。
    猜你喜欢
    • 2020-06-21
    • 2020-09-28
    • 2020-10-21
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2020-12-26
    • 2015-07-10
    相关资源
    最近更新 更多