2012-01-29 9 views
9

मैं एक matplotlib क्षैतिज बार इस प्रकार तैयार की गई है:अनुरूपण सिर्फ एक कांटा का उपयोग कर matplotlib में टिक के निशान की ओर

import matplotlib.pyplot as plt 
from numpy import * 
from scipy import * 
bars = arange(5) + 0.1 
vals = rand(5) 
print bars, vals 
plt.figure(figsize=(5,5), dpi=100) 
spines = ["bottom"] 
ax = plt.subplot(1, 1, 1) 
for loc, spine in ax.spines.iteritems(): 
    if loc not in spines: 
    spine.set_color('none') 
# don't draw ytick marks 
#ax.yaxis.set_tick_params(size=0) 
ax.xaxis.set_ticks_position('bottom') 
plt.barh(bars, vals, align="center") 
plt.savefig("test.png") 

यह इस छवि बनाता है: enter image description here

मैं करना चाहता था केवल xaxis, दिखाने के जो कताई का उपयोग करके काम किया, लेकिन अब यह दाएं हाथ याक्सिस के लिए इन लटकते टिकटें प्लॉट करता है। मैं इन्हें कैसे हटा सकता हूं? आईडी प्लॉट के बाईं ओर ytickmarks रखना पसंद है और उन्हें सामना करना पड़ता है (सलाखों के विपरीत दिशा)। मुझे पता है कि मैं पूरी तरह ytickmarks लाइन uncommenting से निकाल सकते हैं:

#ax.yaxis.set_tick_params(size=0) 

लेकिन मैं केवल बाएं हाथ की ओर ytick अंक रखना चाहते हैं। धन्यवाद।

EDIT: मैंने कुछ परीक्षण और त्रुटि के बाद समाधान प्राप्त किया, हालांकि मुझे यकीन है कि मेरा समाधान शायद ऐसा करने का सबसे अच्छा तरीका नहीं है, इसलिए कृपया मुझे बताएं कि आप अभी क्या सोचते हैं। मैंने पाया कि मैं कर सकता हूं:

ax.spines["left"].axis.axes.tick_params(direction="outward") 

टिक मार्क दिशा निर्धारित करने के लिए। सही y- अक्ष से छुटकारा पाने के टिक्स, मैं का उपयोग करें:

ax.yaxis.set_ticks_position("left") 

उत्तर

15

आप बस इस्तेमाल कर सकते हैं:

ax.tick_params(axis='y', direction='out') 

इस टिक-बोध होगा के रूप में आप चाहते हैं। और:

ax.yaxis.tick_left() 

इस साजिश नहीं होगा सही टिक्स

11

आप उपयोग कर सकते हैं:

ax.tick_params(top="off") 
ax.tick_params(bottom="off") 
ax.tick_params(right="off") 
ax.tick_params(left="off") 
संबंधित मुद्दे