2014-07-10 9 views
22

में केवल कुछ आइटम दिखाएं मैं वर्तमान में टैक्सोनोमिक डेटा की एक बड़ी मात्रा का एक स्टैक्ड बार ग्राफ प्लॉट कर रहा हूं, और केवल पौराणिक कथाओं में महत्वपूर्ण प्रजातियों को दिखाना चाहता हूं (~ 500 में से मैं ~ 25 दिखाना चाहता हूं)। क्या ऐसा करने के लिए एक सरल तरीका है? नीचे है कोड मैं:किंवदंती पायथन Matplotlib

labels=['0','20','40','60','80','100','120'] 
ax1=subj1df.plot(kind='barh', stacked=True,legend=True,cmap='Paired', grid=False) 
legend(ncol=2,loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0.) 
label1=['Baseline','8h','24h','48h','96h','120h'] 
ax1.set_yticklabels(label1, fontdict=None, minor=False) 
plt.title('Subject 1 Phyla',fontweight='bold') 
plt.savefig('Subject1Phyla.eps', format='eps', dpi=1000) 
ax1.set_xticklabels(labels) 

संपादित करें:

h, l = ax1.get_legend_handles_labels() 
legend(l[4],h[4],ncol=2,loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0.) 
+0

तुम्हारा मतलब है कि आप अपने 500 चर के सभी प्लॉट करने के लिए चाहते हैं, लेकिन दिखाने के केवल एक चयनित अपनी कथा में 25? – ThePredator

उत्तर

4

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

import matplotlib.pyplot as plt 
import numpy as np 

myY=np.random.randint(20, size=10) 
myX=np.arange(0,len(myY)) 

selected=[5,10,15] 

fig = plt.figure() 
for X,Y in zip(myX,myY): 
    if Y in selected: 
     mylabel="label = %s"%(Y); mycolor='blue' 
    else: 
     mylabel=None; mycolor='red' 
    plt.scatter(X,Y,50, color=mycolor, label=mylabel) 
plt.legend() 
plt.show() 

यह निम्न साजिश बनाता है: enter image description here

+2

'किंवदंती' आपके किंवदंती – tacaswell

+0

में जो कुछ भी जाता है उसे नियंत्रित करने के लिए कलाकारों की एक सूची और लेबलों की एक सूची भी लेता है, यह काम कर सकता है, लेकिन क्या मैं चाहता हूं कि किंवदंती प्रविष्टियों के तारों की सूची बनने का कोई तरीका है? मेरी साजिश कई प्रविष्टियों की एक स्टैक्ड बार साजिश है। – Broncos423

+0

निश्चित रूप से। आपकी प्रत्येक प्रविष्टि (एक्स, वाई, और नाम द्वारा पहचाना गया) के लिए जांचें कि क्या आपकी वर्तमान प्रविष्टि चयनित लेबल की सूची में है, जिसके लिए आप किंवदंती दिखाना चाहते हैं। आपको यह दिखाने के लिए मुश्किल है कि जब तक आप अपना डेटा कैसा दिखता है, इस बारे में अधिक जानकारी न दिखाएं। –

53

यह काम करता है:

plt.plot(x, y,label='_nolegend_') 

source

+4

के साथ संकेतित समाधान का प्रयास करें क्या?! पूरी तरह से काम करता है लेकिन यह एक अप्रत्याशित समाधान है :) – Owen

2

जो भी कारण दोनों जवाब मेरा स्थिति के लिए काम नहीं किया। क्या काम किया, और वास्तव में ऊपर संकेत दिया गया था:

कथा भी ठीक है कि आपके कथा में चला जाता है को नियंत्रित करने के कलाकारों की एक सूची और लेबल की सूची लेता है - 4:46

पर tacaswell जुला 11 '14
import pandas as pd 
import matplotlib.pyplot as plt 
import pylab 

pd.Series(range(10)).plot(color = 'grey') 
x = list(range(10)) 
y = [i + 1 for i in x] 
scat1 = plt.scatter(x, y) 

pylab.legend([scat1],['moved points'], loc = 'upper left') 

plt.show() 

कोड का परिणाम: The result of the code:

संबंधित मुद्दे