ম্যাটপ্ল্লিটিব চিত্রটিতে আমি কীভাবে ax1.set_xticklabels()
ছোট ব্যবহার করে টিক লেবেলের জন্য ফন্টের আকার তৈরি করতে পারি ?
আরও, এটির অনুভূমিক থেকে উল্লম্ব দিকে কীভাবে ঘোরানো যায়?
ম্যাটপ্ল্লিটিব চিত্রটিতে আমি কীভাবে 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()
। (এটি কেন একটি পদ্ধতি, আমার কোনও ধারণা নেই ... ম্যাটপ্লটলিব সম্পত্তিগুলিকে ঘৃণা করে, স্পষ্টতই!)
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)
আরেকটি বিকল্প
আমার পাশাপাশি দুটি প্লট রয়েছে এবং টিক লেবেলগুলি আলাদাভাবে সামঞ্জস্য করতে চাই।
উপরের সমাধানগুলি কাছে ছিল তবে তারা আমার জন্য কাজ করছে না। আমি এই ম্যাটপ্ল্লিটিব পৃষ্ঠা থেকে আমার সমাধানটি পেয়েছি ।
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)
এবং এটি কাজ করে!