【问题标题】:Using a color from a dataframe as the color of a line for seaborn's pointplot使用数据框中的颜色作为 seaborn 点图的线条颜色
【发布时间】:2018-04-28 14:42:03
【问题描述】:

我目前有一个大的 pandas 数据框,其中包含我的列结构:

Groups  variable  value  method  color

然后我使用 pointplot 来创建多个lineplot,每行都具有不同的颜色。最初我使用huemethod 值执行此操作,但是我最终不得不创建其中一些数据帧,每个数据帧在我放入方法时的顺序不同(因为我对一个方法进行排序,然后使该数据块成为数据框中的第一个条目,并为几种不同的方法执行此操作)。我希望每种方法只与一种颜色相关联,以便它在我制作的所有pointplots 中保持一致。因此,我创建了一个名为 color 的新列,其中包含我希望与该方法关联的 RGB 值。但是,当我尝试绘制此图时,我遇到了一些问题:

g = sns.pointplot(x="Groups",jitter=0.3,alpha=0.7,size=15,y="value", color=result1['color'],data=result1[result1['variable']=="Accuracy"])

这会导致 TypeError,但是,因为 Series 对象是可变的,因此无法散列。有合适的方法吗?

【问题讨论】:

  • 根据我最初的理解,问题出在颜色参数上,它需要颜色的单个字符串/代码值。改用 hue 关键字参数根据不同的分类变量为绘图着色。
  • 就像我说的,我不能使用“hue”。我需要将该组映射到特定颜色。
  • 我认为调色板参数应该可以工作
  • 在提供问题的minimal reproducible example 时,您获得满意答案的机会将大大增加,并附上结果,清楚地解释问题出在哪里以及它应该是什么样子。我确信有任何此类问题的解决方案,但目前这个问题甚至不允许我判断可能的解决方案是否可以接受。

标签: python python-3.x pandas seaborn


【解决方案1】:

如果您从Seaborn Docs 指定多种颜色,您想使用调色板而不是颜色

g = sns.pointplot(x="Groups",jitter=0.3,alpha=0.7,size=15,y="value", palette=result1['color'],data=result1[result1['variable']=="Accuracy"])

【讨论】:

  • 这样做似乎只导致我的一个组被绘制,并且绘制不正确(线不再从点到点连接,而是在整个图中散布着垂直线)但是感谢您对调色板的见解,我会进一步研究,因为我认为颜色不正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多