2009-05-29 3 views
68
डिफ़ॉल्ट के बजाय

"बॉक्सिंग" अक्ष शैली मैं केवल बाईं और नीचे अक्ष करना चाहते हैं, यानी .:मैं matplotlib में शीर्ष और दाएं धुरी को कैसे हटा सकता हूं?

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

यह आसान होना चाहिए, लेकिन मैं डॉक्स में आवश्यक विकल्प नहीं मिल रहा।

उत्तर

44

यह सुझाव दिया matplotlib 2.0 आधिकारिक वेबसाइट HERE से समाधान है:

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

+2

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

32

[संपादित करें] अब (2013-10) में संस्करण 1.3.0 जो इस

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

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

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

+0

सुनिश्चित करें कि आप http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview पर चेतावनी पढ़ा करें।टिक्ट-मार्क समर्थन के बारे में एचटीएमएल अधिष्ठापन करने से पहले अपूर्ण है, उदाहरण के साथ उपरोक्त घुमावदार लेबल के साथ! – timday

+2

कृपया सुनिश्चित करें कि आप मेरे संपादन के साथ शांत हैं। – tacaswell

+0

ऐसा लगता है कि यह धुरी का निर्माण कैसे करता है इस पर निर्भर करता है। 'Mpl.subplots'' द्वारा उत्पन्न अक्ष को इस तरह उपयोग नहीं किया जा सकता है? –

7

आप टिक और इस तरह के (जैसे गुणात्मक चित्र की साजिश रचने के लिए) की जरूरत नहीं है आप भी इस त्वरित समाधान का इस्तेमाल कर सकते हैं: (plt.gca().axison = False साथ उदा)

अक्ष अदृश्य बनाने और फिर उन्हें plt.arrow साथ मैन्युअल रूप से आकर्षित।

+1

यह कताई को हटाने के लिए प्रतीत होता है लेकिन टिक अंक को जगह में छोड़ दें। किसी भी विचार को टिक्स को कैसे हटाया जाए? –

+1

@ रोब: आप सही हैं, मैंने वास्तव में उस स्क्रिप्ट में एक अलग समाधान का उपयोग किया था जिसके बारे में मैं सोच रहा था। मैंने अपना जवाब बदल दिया, अब यह काम करना चाहिए, लेकिन आम तौर पर ऊपर स्वीकृत समाधान बेहतर है। – nikow

56

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

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; समाधान this से प्रेरित)।

-4

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

remove_border()

0

(यह एक विस्तार टिप्पणी के अलावा, comprehe के अलावा यहाँ nsive जवाब)


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

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

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

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

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