सवाल मैं matplotlib में शीर्ष और दाएं धुरी को कैसे हटा सकता हूं?


डिफ़ॉल्ट "बॉक्सिंग" धुरी शैली के बजाय मैं केवल बाएं और नीचे धुरी चाहता हूं, यानी।

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

यह आसान होना चाहिए, लेकिन मुझे दस्तावेज़ों में आवश्यक विकल्प नहीं मिल रहे हैं।


76
2018-05-29 08:45


मूल




जवाब:


आधिकारिक वेबसाइट से यह सुझाया गया Matplotlib 2.0 समाधान है यहाँ:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

enter image description here


63
2017-12-08 15:58



यह matplotlib के नए संस्करणों में स्वीकृत उत्तर से बेहतर है। - ffledgling


वैकल्पिक रूप से, यह

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

ऐसा लगता है कि घुमावदार लेबल समर्थन खोए बिना धुरी पर एक ही प्रभाव प्राप्त होता है।

(Matplotlib 1.0.1; द्वारा प्रेरित समाधान इस)।


59
2017-11-04 15:20





संस्करण 1.3.0 पर अब (2013-10) में matplotlib संपादित करें जिसमें यह शामिल है

वह क्षमता वास्तव में अभी जोड़ा गया था, और इसके लिए आपको सबवर्जन संस्करण की आवश्यकता है। आप उदाहरण कोड देख सकते हैं यहाँ

मैं बस यह कहने के लिए अद्यतन कर रहा हूं कि एक बेहतर है उदाहरण अब ऑनलाइन। फिर भी सबवर्सन संस्करण की आवश्यकता है, फिर भी इसके साथ रिलीज़ नहीं हुआ है।

[संपादित करें] Matplotlib 0.9 9.0 आरसी 1 अभी जारी किया गया था, और इसमें यह क्षमता शामिल है।


31
2018-05-29 09:21



सुनिश्चित करें कि आप चेतावनी पढ़ते हैं matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/... यद्यपि उपरोक्त घुमावदार लेबल के साथ उपरोक्त कोशिश करने और उपयोग करने से पहले टिक-मार्क समर्थन अपूर्ण है! - timday
कृपया सुनिश्चित करें कि आप मेरे संपादन के साथ शांत हैं। - tacaswell
ऐसा लगता है कि यह धुरी का निर्माण कैसे करता है इस पर निर्भर करता है। द्वारा उत्पन्न धुरी mpl.subplots इस तरह इस्तेमाल नहीं किया जा सकता है? - Stefan van der Walt
उदाहरण लिंक अब टूटा हुआ है। - mkosmala


यदि आपको टिकों की आवश्यकता नहीं है और ऐसे (उदाहरण के लिए गुणात्मक चित्रों की साजिश के लिए) आप इस त्वरित कार्यवाही का भी उपयोग कर सकते हैं:

धुरी अदृश्य बनाओ (उदा। के साथ plt.gca().axison = False) और फिर उन्हें मैन्युअल रूप से आकर्षित करें plt.arrow


7
2018-05-29 10:06



ऐसा लगता है कि कताई को हटा दें लेकिन टिक अंक को जगह में छोड़ दें। किसी भी विचार को टिक्स को कैसे हटाया जाए? - Rob Young
@ रोब: आप सही हैं, मैंने वास्तव में उस स्क्रिप्ट में एक अलग समाधान का उपयोग किया था जिसके बारे में मैं सोच रहा था। मैंने अपना जवाब बदल दिया, अब यह काम करना चाहिए, लेकिन आम तौर पर ऊपर स्वीकृत समाधान बेहतर है। - nikow


(यहां विस्तृत उत्तरों के अलावा, यह एक विस्तार टिप्पणी है।)


ध्यान दें कि हम इन तीनों तत्वों में से प्रत्येक को स्वतंत्र रूप से एक-दूसरे से छिपा सकते हैं:

  • सीमा छिपाने के लिए (उर्फ "रीढ़"): ax.set_frame_on(False) या ax.spines['top'].set_visible(False)

  • टिक छिपाने के लिए: ax.tick_params(top=False)

  • लेबल छुपाने के लिए: ax.tick_params(labeltop=False)


1
2017-12-27 10:10





पुस्तकालय Seaborn यह समारोह निराशा () के साथ बनाया गया है।

बस जोड़ दो:

import seaborn as sns

अब अपना ग्राफ बनाएं। और अंत में जोड़ें:

sns.despine()

यदि आप फ़ंक्शन के कुछ डिफ़ॉल्ट पैरामीटर मानों को देखते हैं तो यह शीर्ष और दाएं रीढ़ की हड्डी को हटा देता है और नीचे और बाएं रीढ़ की हड्डी को रखता है:

sns.despine(top=True, right=True, left=False, bottom=False)

यहां और दस्तावेज देखें: https://seaborn.pydata.org/generated/seaborn.despine.html


0
2017-07-05 07:48





यह बहुत अधिक प्राथमिक है, लेकिन चाल चल सकता है:

remove_border ()


-4
2018-01-11 05:44