मैं matplotlib में अक्ष अक्ष पर एक किंवदंती चित्रित कर रहा हूं लेकिन डिफ़ॉल्ट स्थिति जो इसे स्मार्ट स्थान पर रखने का दावा करती है, काम नहीं कर रही है। आदर्श रूप से, मैं किंवदंती उपयोगकर्ता द्वारा खींचने योग्य होना चाहता हूं। यह कैसे किया जा सकता है?matplotlib में ड्रैगगेबल किंवदंती कैसे बनाएं?
उत्तर
नोट: उम्मीद
के रूप में अच्छी तरह से यह अब matplotlib
leg = plt.legend()
if leg:
leg.draggable()
में बनाया गया है काम करेंगे, मैंने पाया बिट और समाधान मेलिंग सूची के बीच बिखरे हुए के टुकड़े। मैं कोड का एक अच्छा मॉड्यूलर हिस्सा है कि आप में ड्रॉप और उपयोग कर सकते हैं के साथ आ गए हैं ... यहाँ यह है:
class DraggableLegend:
def __init__(self, legend):
self.legend = legend
self.gotLegend = False
legend.figure.canvas.mpl_connect('motion_notify_event', self.on_motion)
legend.figure.canvas.mpl_connect('pick_event', self.on_pick)
legend.figure.canvas.mpl_connect('button_release_event', self.on_release)
legend.set_picker(self.my_legend_picker)
def on_motion(self, evt):
if self.gotLegend:
dx = evt.x - self.mouse_x
dy = evt.y - self.mouse_y
loc_in_canvas = self.legend_x + dx, self.legend_y + dy
loc_in_norm_axes = self.legend.parent.transAxes.inverted().transform_point(loc_in_canvas)
self.legend._loc = tuple(loc_in_norm_axes)
self.legend.figure.canvas.draw()
def my_legend_picker(self, legend, evt):
return self.legend.legendPatch.contains(evt)
def on_pick(self, evt):
if evt.artist == self.legend:
bbox = self.legend.get_window_extent()
self.mouse_x = evt.mouseevent.x
self.mouse_y = evt.mouseevent.y
self.legend_x = bbox.xmin
self.legend_y = bbox.ymin
self.gotLegend = 1
def on_release(self, event):
if self.gotLegend:
self.gotLegend = False
... और अपने कोड में ...
def draw(self):
ax = self.figure.add_subplot(111)
scatter = ax.scatter(np.random.randn(100), np.random.randn(100))
legend = DraggableLegend(ax.legend())
मैंने मैटलप्लिब-यूजर ग्रुप को ईमेल किया और जॉन हंटर एसवीएन हेड में अपना समाधान जोड़ने के लिए काफी दयालु था।
गुरु, 28 Jan, 2010 को पर 3:02 प्रधानमंत्री एडम फ्रेजर लिखा है:
मैंने सोचा कि मैं के बाद से खींचने योग्य कथा समस्या का समाधान का हिस्सा था यह मुझे हमेशा के लिए ले लिया मेलिंग सूचियों पर सभी बिखरे हुए ज्ञान को आत्मसात करने के लिए ...
कूल - अच्छा उदाहरण। मैंने कोड को legend.py में जोड़ा। अब आप
पैर = ax.legend कर सकते हैं()
leg.draggable()खींचने योग्य मोड सक्षम करने। आप ड्रैगगेबल स्थिति टॉगल करने के लिए बार-बार इस func को कॉल कर सकते हैं।
मुझे आशा है कि यह matplotlib के साथ काम करने वाले लोगों के लिए सहायक होगा।
Matplotlib (v1.0.1) के नए संस्करणों में, यह अंतर्निहित है।
def draw(self):
ax = self.figure.add_subplot(111)
scatter = ax.scatter(np.random.randn(100), np.random.randn(100))
legend = ax.legend()
legend.draggable(state=True)
यदि आप matplotlib इंटरैक्टिव रूप से उपयोग कर रहे हैं (उदाहरण के लिए, आईपीथन के पिलैब मोड में)।
plot(range(10), range(10), label="test label")
plot(range(10), [5 for x in range(10)], label="another test")
l = legend()
l.draggable(True)
- 1. Matplotlib किंवदंती, नीचे
- 2. Matplotlib: किंवदंती ठीक से प्रदर्शित नहीं होती
- 3. ड्रैगगेबल आइटम्स के साथ ListView कैसे बनाएं?
- 4. matplotlib किंवदंती डबल errorbars दिखा रहा है
- 5. एएसपीनेट कोड में एचटीएमएल फ़ील्डेट और किंवदंती कैसे बनाएं?
- 6. matplotlib
- 7. किंवदंती
- 8. matplotlib
- 9. ड्रैगगेबल को खींचते समय ड्रैगगेबल
- 10. matplotlib - अलग सबप्लॉट में लीजेंड
- 11. Matplotlib
- 12. ggplot2: किंवदंती में धराशायी रेखा
- 13. ड्रैगगेबल div
- 14. MATLAB: किंवदंती
- 15. डब्ल्यूपीएफ में ड्रैगगेबल कैनवास 'थंब'
- 16. Matplotlib legend
- 17. Matplotlib: रेखा
- 18. matplotlib
- 19. matplotlib
- 20. मैं matplotlib पायथन में पाठ को स्वतः कैसे बदलूं?
- 21. जीडब्ल्यूटी ड्रैगगेबल सेलटेबल सेल
- 22. प्रत्येक किंवदंती लेबल
- 23. Achartengine किंवदंती स्थान
- 24. ggplot2 किंवदंती प्रदर्शन आदेश
- 25. आईफोन एसडीके में कोर प्लॉट में एक किंवदंती कैसे जोड़ें?
- 26. ऑक्टेट किंवदंती में फ़ॉन्ट आकार बढ़ाएं?
- 27. jQuery ड्रैगगेबल वापस
- 28. दो ड्रैगगेबल divs
- 29. jQuery यूआई ड्रैगगेबल
- 30. आर प्लॉट किंवदंती व्यवहार में लाइनब्रेक
एडम: यह देखते हुए कि इस, पर्याप्त पूरी तरह से है, और पर्याप्त रूप से प्रासंगिक matplotlib distro में शामिल करने के लिए गया था, और यह देखते हुए कि (मुझे लगता है कि) आप अपने मूल प्रश्न से हटाया आप शीर्ष पर वाक्य के एक जोड़े सहित मन होगा इस क्यू के लिए उपयोगकर्ता इस बारे में एक विचार प्राप्त कर सकते हैं कि यह कोड क्या है (उन्हें कोड के माध्यम से पढ़ने से बचाने के लिए)। और अच्छा काम, जिस तरह से मेरे +1 से। – doug
धन्यवाद डॉउग। जैसा कि आपने सुझाव दिया था, मैंने शीर्ष पर प्रश्न को phrased किया। उम्मीद है कि यह सहायक होगा। :] –
इसे माध्यमिक धुरी के लिए बढ़ाया जा सकता है? – denfromufa