Matplotlib महापुरूष काम नहीं कर रहे हैं


96

जब से मैं एक कहानी बनाने की कोशिश कर रहा हूँ, तो मुझे निम्नलिखित त्रुटि मिलती है:

/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30810>]
Use proxy artist instead.

http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist

  warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),))
/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30990>]
Use proxy artist instead.

http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist

  warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),))

यह इस तरह एक तुच्छ स्क्रिप्ट के साथ होता है:

import matplotlib.pyplot as plt

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

plot1 = plt.plot(a,b)
plot2 = plt.plot(a,c)

plt.legend([plot1,plot2],["plot 1", "plot 2"])
plt.show()

मैंने लिंक पाया है कि त्रुटि मुझे त्रुटि के स्रोत के निदान में बहुत बेकार की ओर इशारा करती है।

जवाबों:


164

आपको अल्पविराम जोड़ना चाहिए:

plot1, = plt.plot(a,b)
plot2, = plt.plot(a,c)

आपको कॉमा की आवश्यकता का कारण यह है क्योंकि plt.plot () लाइन ऑब्जेक्ट्स का एक टपल लौटाता है, कोई फर्क नहीं पड़ता कि वास्तव में कमांड से कितने बनाए जाते हैं। अल्पविराम के बिना, "प्लॉट 1" और "प्लॉट 2" लाइन ऑब्जेक्ट्स के बजाय ट्यूपल्स हैं, जो बाद में कॉल करके plt.legend () में विफल हो जाते हैं।

अल्पविराम परिणाम को स्पष्ट करता है ताकि टपल के बजाय, "प्लॉट 1" और "प्लॉट 2" स्वचालित रूप से टपल के भीतर पहले ऑब्जेक्ट बन जाएं, यानी लाइन ऑब्जेक्ट जो आप वास्तव में चाहते हैं।

http://matplotlib.sourceforge.net/users/legend_guide.html#adjusting-the-order-of-legend-items

पंक्ति, = कथानक (x, sin (x)) अल्पविराम किस लिए खड़ा है?


2
क्या आप यहाँ व्याख्या को कॉपी / जोड़ सकते हैं? stackoverflow साइट पर (प्रकाश डाला, संग्रह) प्रासंगिक भागों की नकल को प्रोत्साहित करती है
n611x007 21

16

"लेबल" कीवर्ड का उपयोग करें, जैसे:

pyplot.plot(x, y, label='x vs. y')

और फिर इस तरह किंवदंती जोड़ें:

pyplot.legend()

किंवदंती लाइन गुणों जैसे मोटाई, रंग आदि को बरकरार रखेगी।

यहां छवि विवरण दर्ज करें


9

handlesAKA का प्रयोग करेंProxy artists

import matplotlib.lines as mlines
import matplotlib.pyplot as plt
# defining legend style and data
blue_line = mlines.Line2D([], [], color='blue', label='My Label')
reds_line = mlines.Line2D([], [], color='red', label='My Othes')

plt.legend(handles=[blue_line, reds_line])

plt.show()

-1

ग्राफ का प्लॉट करते समय लेबल का उपयोग करें, तब केवल यू लीजेंड का उपयोग कर सकते हैं। x अक्ष नाम और y अक्ष नाम किंवदंती के नाम से भिन्न है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.