एक matplotlib आकृति में, मैं ax1.set_xticklabels()
छोटे का उपयोग करके टिक लेबल के लिए फ़ॉन्ट आकार कैसे बना सकता हूं ?
इसके अलावा, कोई इसे क्षैतिज से ऊर्ध्वाधर तक कैसे घुमा सकता है?
एक matplotlib आकृति में, मैं ax1.set_xticklabels()
छोटे का उपयोग करके टिक लेबल के लिए फ़ॉन्ट आकार कैसे बना सकता हूं ?
इसके अलावा, कोई इसे क्षैतिज से ऊर्ध्वाधर तक कैसे घुमा सकता है?
जवाबों:
कृपया ध्यान दें कि एमपीएल के नए संस्करणों में इस कार्य के लिए एक शॉर्टकट है। इस प्रश्न के अन्य उत्तर में एक उदाहरण दिखाया गया है: https://stackoverflow.com/a/11386056/42346
नीचे दिया गया कोड दृष्टांत उद्देश्यों के लिए है और आवश्यक रूप से अनुकूलित नहीं किया जा सकता है।
import matplotlib.pyplot as plt
import numpy as np
def xticklabels_example():
fig = plt.figure()
x = np.arange(20)
y1 = np.cos(x)
y2 = (x**2)
y3 = (x**3)
yn = (y1,y2,y3)
COLORS = ('b','g','k')
for i,y in enumerate(yn):
ax = fig.add_subplot(len(yn),1,i+1)
ax.plot(x, y, ls='solid', color=COLORS[i])
if i != len(yn) - 1:
# all but last
ax.set_xticklabels( () )
else:
for tick in ax.xaxis.get_major_ticks():
tick.label.set_fontsize(14)
# specify integer or one of preset strings, e.g.
#tick.label.set_fontsize('x-small')
tick.label.set_rotation('vertical')
fig.suptitle('Matplotlib xticklabels Example')
plt.show()
if __name__ == '__main__':
xticklabels_example()
plt.setp
। (इसके अलावा, एक नज़र डालें ax.tick_params
) उदाहरण के लिए, आप बस कर सकते हैं plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
। इसके अलावा, कुल्हाड़ियों की वस्तुओं में एक ax.is_last_row()
विधि है जो आपके उदाहरण जैसे मामलों में काम आ सकती है। इसके बजाय if i != len...
, आप कर सकते हैं if not ax.is_last_row()
। (यह एक विधि क्यों है, मेरे पास कोई सुराग नहीं है ... Matplotlib गुण से नफरत करता है, जाहिरा तौर पर!)
is_last_row()
, धन्यवाद! मैंने plt.setp
अतीत में उपयोग किया है, और यह निश्चित रूप से निश्चित नहीं था कि यह टिक लेबल को अनुकूलित करने के एक अधिक विहित तरीके का प्रतिनिधित्व करता है। आपने उस संदेह को हटा दिया है, धन्यवाद। अधिक मोटे तौर पर: आपके उत्तर, विशेष रूप से matplotlib
टैग में, अक्सर मुझे खौफ में छोड़ देते हैं। अच्छा काम करते रहो।
plt.setp
एक "मैटलैब-इसम" है, और एक स्पष्ट लूप संभवतः बहुत अधिक पायथोनिक है। मतलबी होने के नाते, अपने आप को, setp
स्वाभाविक लगता है, लेकिन प्रत्येक को अपना। या तो एक बहुत पठनीय है, इमो
ax.tick_params(axis='x', labelsize=8)
get_ticklabels
नहीं होना चाहिएget_major_ticks
वास्तव में एक सरल तरीका है। मुझे अभी मिला:
import matplotlib.pyplot as plt
# We prepare the plot
fig, ax = plt.subplots()
# We change the fontsize of minor ticks label
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)
यह केवल label
आपके प्रश्न के भाग के आकार का उत्तर देता है ।
axis = 'x'
या axis = 'y'
संशोधित करने के लिए
एक ही समय में फ़ॉन्ट आकार और रोटेशन दोनों को निर्दिष्ट करने के लिए, यह प्रयास करें:
plt.xticks(fontsize=14, rotation=90)
वैकल्पिक रूप से, आप बस कर सकते हैं:
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
plt.tick_params(axis='both', which='minor', labelsize=12)
ax.xaxis.set_tick_params(labelsize=20)
एक और विकल्प
मेरे पास दो प्लॉट हैं, जो अलग-अलग हैं और टिक लेबल को अलग से समायोजित करना चाहते हैं।
उपरोक्त समाधान बंद थे लेकिन वे मेरे लिए काम नहीं कर रहे थे। मुझे इस matplotlib पेज से अपना समाधान मिला ।
ax.xaxis.set_tick_params(labelsize=20)
यह चाल चली और सीधे बिंदु पर पहुंच गई। मेरे उपयोग के मामले के लिए, यह सही पर साजिश थी जिसे समायोजित करने की आवश्यकता थी। बाईं ओर प्लॉट के लिए चूंकि मैं नए टिक लेबल बना रहा था इसलिए मैं लेबल को सेट करने के साथ ही उसी प्रक्रिया में फ़ॉन्ट को समायोजित करने में सक्षम था ।
अर्थात
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
इस प्रकार मैंने सही भूखंड के लिए उपयोग किया,
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
एक मामूली सूक्ष्मता ... मुझे पता है ... लेकिन मुझे आशा है कि यह किसी की मदद करता है :)
बोनस अंक अगर किसी को पता है कि परिमाण लेबल के क्रम के फ़ॉन्ट आकार को कैसे समायोजित किया जाए।
आप लेबल डिस्प्ले पैरामीटर को भी बदल सकते हैं जैसे कि एक पंक्ति के साथ इसे फोंटाइज़ करें:
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
छोटे फ़ॉन्ट के लिए, मैं उपयोग करता हूं
ax1.set_xticklabels(xticklabels, fontsize=7)
और यह काम करता है!