मेरे पास नीचे की तरह एक डेटाफ्रेम है,

data table sample

और मैं विभिन्न परियोजनाओं से विभिन्न प्रजातियों के आकार वितरण की साजिश रचने की कोशिश कर रहा हूं। यहाँ मैं कोशिश कर रहा हूँ (बहुत ही सरल कोड क्योंकि मैं अजगर के लिए नया हूँ):

test=pd.read_excel(file,sheet_name="test",engine='openpyxl')
test.set_index('Species')
test=test.groupby('Project ID')
ax=test.boxplot(column='sizes',by='Species',return_type='axes')

साजिश बिल्कुल मुझे चाहिए (नीचे) boxplot

हालांकि, यह कुल्हाड़ी को श्रृंखला वस्तु के रूप में कुल्हाड़ी नहीं देता है, जिससे प्लॉट स्वरूपण (यानी वाई लेबल जोड़ना, आदि ...) को संभालना मुश्किल हो जाता है, इसे ठीक करने का कोई तरीका है?

0
shishi1181 22 मई 2021, 11:20

1 उत्तर

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

Matplotlib (जो कि पांडा उपयोग करता है) में, आपको हमेशा प्रति सबप्लॉट एक "अक्ष" मिलता है। इसलिए, यह समझ में आता है कि आपके उदाहरण (दो सबप्लॉट) में कुल्हाड़ियों का संग्रह (श्रृंखला) है। यह वास्तव में अच्छी खबर है, क्योंकि अब आप उस सबप्लॉट तक पहुंच सकते हैं जिसे आप नाम से बहुत आसानी से स्टाइल करना चाहते हैं। कहें, उदाहरण के लिए, आप बाएं सबप्लॉट में वाई-लेबल जोड़ना चाहते हैं, आप यह कर सकते हैं:

ax_A = ax.loc["A"].loc["sizes"]
ax_B = ax.loc["B"].loc["sizes"]

ax_A.set_ylabel("My y-label")

पूरा उदाहरण:

import numpy as np
import pandas as pd
test = pd.DataFrame({"Project ID": np.random.choice(["A", "B"], 100),
              "Species": np.random.choice(["Plant1", "Plant2", "Plant3"], 100),
              "sizes": np.random.random(100)})


test=test.groupby('Project ID')
ax=test.boxplot(column='sizes',by='Species',return_type='axes')

ax_A = ax.loc["A"].loc["sizes"]
ax_B = ax.loc["B"].loc["sizes"]

ax_A.set_ylabel("My y-label")
1
mcsoini 22 मई 2021, 11:56
खुशी है कि यह काम करता है। कृपया उत्तर स्वीकार करें यदि यह आपकी समस्या का समाधान करता है
 – 
mcsoini
24 मई 2021, 09:51