【问题标题】:How to change the line color in seaborn linear regression jointplot如何更改 seaborn 线性回归联合图中的线条颜色
【发布时间】:2015-10-12 16:01:05
【问题描述】:

seaborn API 中所述,以下代码将生成线性回归图。

import numpy as np, pandas as pd; np.random.seed(0)
import seaborn as sns; sns.set(style="white", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg')
sns.plt.show()

但是,对于大量数据点,回归线不再可见。我怎样才能改变它的颜色?我找不到内置的 seaborn 命令。

如果线条在背景中(即在点后面),我还想问一下如何将它带到前面。

【问题讨论】:

  • 如果 seaborn 将艺术家归还,这将非常容易。如果函数 API 中没有旋钮,您可以做的最好的事情是查看g.lines 尝试猜测回归线中的哪个艺术家,然后执行ln.set_color('k')
  • @tcaswell 感谢您的提示!不幸的是AttributeError: 'JointGrid' object has no attribute 'lines'

标签: matplotlib seaborn


【解决方案1】:

正如 mwaskom 巧妙地指出的那样,有几种方法。您可以将参数传递给联合图,但在那里设置 color 会影响整个散点图:

import numpy as np, pandas as pd; np.random.seed(0)
import seaborn as sns#; sns.set(style="white", color_codes=True)
tips = sns.load_dataset("tips")
g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg',
                  joint_kws={'color':'green'}) # Scatter and regression all green

或者通过散点图关键字字典传递一个线图关键字字典。我阅读了seaborn/linearmodels.py 来弄清楚在哪里执行此操作,这本身就很有趣且内容丰富。字典中的字典:

g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg',
                  joint_kws={'line_kws':{'color':'cyan'}}) # Only regression cyan

或者您可以在绘制后访问该线并直接更改它。这取决于回归线是绘制的第一条线,因此可能会因 seaborn 更新而中断。它在美学/教学上也有所不同,因为您不会重新着色不确定性传播。这是熟悉JointGrid 对象是什么以及如何与它交互的好方法。 (也许有些属性你不能用函数调用参数设置,虽然我想不出。)

g = sns.jointplot(x="total_bill", y="tip", data=tips, kind='reg')
regline = g.ax_joint.get_lines()[0]
regline.set_color('red')
regline.set_zorder(5)

【讨论】:

  • 这可行,但最好使用 joint_kws 选项将颜色传递到绘图中。
  • 我认为这就是所有方法,@mwaskom。还有什么要记录的吗? :)
  • 如何使用最新的 seaborn 版本获得此输出?
  • 现在适用于 seaborn 0.11.1;唯一的变化是最后一个选项,红线。
  • Seaborn 过去会自动执行此操作,但现在不会了,@Mehdi Abassi。 (感谢您指出;我已经更新了图形。)看起来最好的做法是 calculate coefficients using statistical functions 并自己添加文本字符串。
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2020-08-07
  • 1970-01-01
  • 2019-09-03
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多