2013-02-13 10 views
67

के साथ संरेखित करना नीचे दिए गए आकृति के एक्स अक्ष को जांचें। मैं लेबल्स को बायीं तरफ कैसे ले जा सकता हूं ताकि वे अपने संबंधित टिकों के साथ संरेखित हो सकें?घुमावदार xticklabels को उनके संबंधित xticks

मैं का उपयोग कर लेबल घूर्णन कर रहा हूँ:

ax.set_xticks(xlabels_positions) 
ax.set_xticklabels(xlabels, rotation=45) 

लेकिन, जैसा कि आप देख सकते हैं, रोटेशन पाठ लेबल के बीच पर केंद्रित है। जो ऐसा लगता है कि उन्हें दाईं ओर स्थानांतरित किया गया है।

मैं इस के बजाय का उपयोग कर दिया है की कोशिश की:

ax.set_xticklabels(xlabels, rotation=45, rotation_mode="anchor") 

... लेकिन यह है कि मैं क्या के लिए कामना की नहीं करता है। और "anchor"rotation_mode पैरामीटर के लिए एकमात्र मूल्य माना जाता है।

Example

उत्तर

116

आप ticklabels की क्षैतिज संरेखण सेट नीचे दिए गए उदाहरण देख सकते हैं। यदि आप घुमावदार लेबल के चारों ओर एक आयताकार बॉक्स की कल्पना करते हैं, तो आयत के किनारे आप टिकपॉइंट के साथ गठबंधन करना चाहते हैं?

अपने विवरण को देखते हुए, आप चाहते हैं: हा = 'सही'

n=5 

x = np.arange(n) 
y = np.sin(np.linspace(-3,3,n)) 
xlabels = ['Ticklabel %i' % i for i in range(n)] 

fig, axs = plt.subplots(1,3, figsize=(12,3)) 

ha = ['right', 'center', 'left'] 

for n, ax in enumerate(axs): 
    ax.plot(x,y, 'o-') 
    ax.set_title(ha[n]) 
    ax.set_xticks(x) 
    ax.set_xticklabels(xlabels, rotation=40, ha=ha[n]) 

enter image description here

0

लेबल घूर्णन निश्चित रूप से संभव है। ध्यान दें कि ऐसा करने से पाठ की पठनीयता कम हो जाती है। एक वैकल्पिक इस तरह के कोड का उपयोग वैकल्पिक लेबल पदों के लिए है:

import numpy as np 
n=5 

x = np.arange(n) 
y = np.sin(np.linspace(-3,3,n)) 
xlabels = ['Long ticklabel %i' % i for i in range(n)] 


fig, ax = plt.subplots() 
ax.plot(x,y, 'o-') 
ax.set_xticks(x) 
labels = ax.set_xticklabels(xlabels) 
for i, label in enumerate(labels): 
    label.set_y(label.get_position()[1] - (i % 2) * 0.075) 

enter image description here

अधिक पृष्ठभूमि और विकल्प के लिए, this post on my blog

देखना
संबंधित मुद्दे