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.

2
rmc33 7 मई 2019, 19:57

1 उत्तर

सबसे बढ़िया उत्तर

जवाबों के आधार पर यहां और यहां, आपको लेजेंड ऑब्जेक्ट तक पहुंचने और टेक्स्ट को संशोधित करने की जरूरत है, जो सीबॉर्न में उतना सीधा नहीं है जितना कि मैंने सोचा था कि होगा।

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

2
HS-nebula 7 मई 2019, 17:23