Как изменить цвет линии в jointplot линейной регрессии seaborn

как описано в 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()

однако с большим количеством точек данных линия регрессии больше не видна. Как я могу изменить его цвет? Я не мог найти команду из морских Рожков.

Если линия находится в фоновом режиме (т. е. за точками), я также хотел бы спросить, как вывести ее на передний план.

1 ответов


есть пара подходов, как тактично отметил мваском. Вы можете передать аргументы на совместный сюжет, но установив color там влияет на весь scatterplot:

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

enter image description here

или передать словарь линейных ключевых слов через этот словарь ключевых слов рассеяния. Я читаю seaborn/linearmodels.py чтобы выяснить, где это сделать, что было занимательно и познавательно само по себе. Дикт в дикт:

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

enter image description here

или вы можете получить доступ к линии после того, как оно нарисовано и изменить его. Это зависит от линии регрессии, которая является первой строкой, поэтому может сломаться с обновлениями 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')

enter image description here