Matplotlib में ऊर्ध्वाधर और क्षैतिज रेखाएँ


122

मुझे समझ में नहीं आ रहा है कि मैं निर्दिष्ट सीमाओं पर क्षैतिज और ऊर्ध्वाधर लाइनें बनाने में असमर्थ क्यों हूं। मैं इस बॉक्स द्वारा डेटा को बाध्य करना चाहूंगा। हालाँकि, पक्ष मेरे निर्देशों का पालन नहीं करते हैं। ऐसा क्यों है?

# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

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

जवाबों:


166

Pyplot फ़ंक्शन जिसे आप कॉल कर रहे हैं, axhline()और axvline()निर्देशांक की परवाह किए बिना, अक्ष रेंज के एक हिस्से को फैलाते हुए लाइनें खींचें। पैरामीटर xminया yminउपयोग मान 0.0 के अक्ष के न्यूनतम के रूप में और 1.0 अक्ष के अधिकतम के रूप में।

इसके बजाय, plt.plot((x1, x2), (y1, y2), 'k-')रंग k में बिंदु (X1, y1) से बिंदु (x2, y2) तक एक रेखा खींचने के लिए उपयोग करें। देख लो pyplot.plot


3
matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline <- प्रलेखन। इस लिंक को शामिल करने के लिए आपको अपना उत्तर संपादित करना चाहिए
tacaswell

15
क्षैतिज और ऊर्ध्वाधर लाइनों साजिश के लिए एक और समाधान का उपयोग करने के लिए है hlinesया vlinesक्रमश: जैसा कि यह एक नियमित रूप से की तुलना में अधिक तुच्छ है plotimo
sodd

20

Matplotlib के नए उपयोगकर्ताओं के लिए ऊर्ध्वाधर और क्षैतिज रेखाएँ खींचना एक आम समस्या हो सकती है। इस समस्या को समझने के लिए, आपको इस बात की जानकारी होनी चाहिए कि विभिन्न निर्देशांक प्रणाली माटप्लोटलिब में मौजूद हैं

विधि axhline और axvline आकर्षित करने के लिए पर लाइनों उपयोग किया जाता है कुल्हाड़ियों समन्वय । इस समन्वय प्रणाली में, निचले बाएं बिंदु के लिए समन्वय (0,0) है, जबकि शीर्ष दाएं बिंदु के लिए समन्वय (1,1), आपके भूखंड की डेटा श्रेणी की परवाह किए बिना है। दोनों पैरामीटर xminऔर xmaxसीमा [0,1] में हैं।

दूसरी ओर, डेटा समन्वय पर रेखाएँ खींचने के लिए मेथड हेल और वॉयल का उपयोग किया जाता है । के लिए सीमा और एक्स अक्ष के डेटा की सीमा के दायरे में हैं।xminxmax

चलो एक ठोस उदाहरण लेते हैं,

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 100)
y = np.sin(x)

fig, ax = plt.subplots()

ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')

plt.show()

यह निम्नलिखित कथानक का निर्माण करेगा: यहाँ छवि विवरण दर्ज करें

के लिए मूल्य xminऔर xmaxके लिए ही कर रहे हैं axhlineऔर hlinesविधि। लेकिन उत्पादित लाइन की लंबाई अलग है।


16

यदि आप एक बाउंडिंग बॉक्स जोड़ना चाहते हैं, तो एक आयत का उपयोग करें:

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

Rectangle दस्तावेज़

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