Используя seaborn, как я могу нарисовать линию по своему выбору через мой scatterplot?

Я хочу иметь возможность нарисовать линию моей спецификации через участок, созданный в seaborn. Сюжет я выбрала JointGrid, но любой рассеивания будет делать. Я подозреваю, что Сиборн, возможно,не делает это легким?

вот код, отображающий данные (кадры данных из набора данных Iris длины лепестка и ширины лепестка):

import seaborn as sns
iris = sns.load_dataset("iris")    
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50)
    grid.plot_joint(plt.scatter, color="g")

enter image description here

Если вы берете этот график из набора данных iris, как я могу нарисовать линию по своему выбору через него? Например, линия отрицательного наклона может разделять кластеры, а положительный наклон может проходить через них.

2 ответов


похоже, что вы импортировали matplotlib.pyplot as plt получить plt.scatter в коде. Вы можете просто использовать функции matplotlib для построения линии:

import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")    
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50)
grid.plot_joint(plt.scatter, color="g")
plt.plot([0, 4], [1.5, 0], linewidth=2)

enter image description here


создать JointGrid в seaborn, вы создали три оси, основной ax_joint, и две крайние оси.

чтобы построить что-то еще на совместных осях, мы можем получить доступ к совместной сетке с помощью grid.ax_joint, а затем создайте объекты сюжета там, как и с любым другим matplotlib