При редактировании с помощью plt.legend легенда разброса графиков Seaborn прерывается - PullRequest
1 голос
/ 07 мая 2019

Пытаясь настроить легенду для моего графика рассеяния морского происхождения с помощью plt.legend, текст выглядит нормально, но он продолжает ломать соответствующие маркеры легенды.

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips")
g = sns.scatterplot(x="total_bill", y="tip", hue="day",
 data=tips, s=75,  edgecolor='k')

# title
plt.legend(title='Day of Week', labels=['Thursday', 'Friday', 'Saturday', 'Sunday'])

sns.plt.show()

Текст выглядит хорошо, но точки рядом с каждой меткой перепутаны после первой. Первый элемент легенды в порядке, он пропускает маркер для второго элемента легенды, а последующие элементы легенды смещаются.

Results here.

1 Ответ

0 голосов
/ 07 мая 2019

Исходя из ответов здесь и здесь , вам нужно получить доступ к объекту легенды и изменить тексты, что не так просто в Seaborn, как я думал.

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips")
g = sns.scatterplot(x="total_bill", y="tip", hue="day",
                    data=tips, s=75,  edgecolor='k')

# Assumes Seaborn 0.9.0
legend = g.legend_

# Set legend title
legend.get_texts()[0].set_text('Day of Week')

labels=['Thursday', 'Friday', 'Saturday', 'Sunday']

# Set legend labels
for i, label in enumerate(labels):
    # i+1 because i=0 is the title, and i starts at 0
    legend.get_texts()[i+1].set_text(label) 

# sns.plt.show() for me gives "AttributeError: module 'seaborn' has no attribute 'plt'"
plt.show()

final image

...