ম্যাটপ্লটলিব টিক লেবেলগুলির ফন্টের আকার আরও ছোট করে


299

ম্যাটপ্ল্লিটিব চিত্রটিতে আমি কীভাবে ax1.set_xticklabels()ছোট ব্যবহার করে টিক লেবেলের জন্য ফন্টের আকার তৈরি করতে পারি ?

আরও, এটির অনুভূমিক থেকে উল্লম্ব দিকে কীভাবে ঘোরানো যায়?


এই প্রশ্নটি জিজ্ঞাসা করার জন্য ধন্যবাদ, আমি এখনই এই সমস্যাটি সমাধান করার চেষ্টা করছি। আমি এখানে দৃ strongly়ভাবে মতামত করছি না, তবে দেখে মনে হচ্ছে ভোটাররা মনে করেন যে সেরা উত্তরটি গৃহীত উত্তর নয়। আপনি কি মনে করেন?
অ্যারন হল

আমি কী সঠিকভাবে পড়েছি যে ম্যাটপ্ললটিবতে ফন্টসাইজ পরিবর্তন করার জন্য কমপক্ষে 5 টি ভিন্ন উপায় আছে? : ডি
ফামারগার

উত্তর:


127

দয়া করে নোট করুন যে এমপিএল এর নতুন সংস্করণগুলির এই কাজের জন্য একটি শর্টকাট রয়েছে। এই প্রশ্নের অন্য উত্তরে একটি উদাহরণ দেখানো হয়েছে: 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()

এখানে চিত্র বর্ণনা লিখুন


84
ঠিক যেমন একদিকে: টিক লেবেল বস্তুগুলির মধ্যে লুপিংয়ের পরিবর্তে আপনি ব্যবহার করতে পারেন 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ট্যাগে আমাকে প্রায়শই বিস্মিত করে। মহান কাজ আপ রাখুন.
যান্ত্রিক_মিট

1
ধন্যবাদ !! আমি বিশেষত আপনার কাছ থেকে দয়া করে শব্দ প্রশংসা করি! ক্যানোনিকাল এই ক্ষেত্রে খুব আপেক্ষিক। plt.setpএকটি "মতলব-ইসম", এবং একটি স্পষ্ট লুপ সম্ভবত অনেক বেশি পাইথোনিক। মাতলাব রূপান্তর হওয়ার কারণে আমি নিজেকে setpপ্রাকৃতিক বোধ করি তবে প্রত্যেকেরই নিজের। হয় একটি বেশ পঠনযোগ্য, ইমো
জো কিংটন

50
নতুন সংস্করণে আমি দেখতে পেয়েছি যে আপনাকে লেবেল আকারের প্যারামিটারটি ব্যবহার করতে হবে : যেমনax.tick_params(axis='x', labelsize=8)
ভ্লাদ্টন

হওয়া উচিত get_ticklabelsনয়get_major_ticks
জেজ

505

আসলে একটি সহজ উপায় আছে। আমি মাত্র পেলাম:

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যদিও আপনার প্রশ্নের অংশের আকারের উত্তর দেয় ।


2
মাত্র একটি অক্ষ ব্যবহার করুন axis = 'x'বা axis = 'y'সংশোধন করতে
প্রিয়.by. জেসুস

221

একই সাথে ফন্টের আকার এবং ঘূর্ণন উভয়ই নির্দিষ্ট করতে, এটি ব্যবহার করে দেখুন:

plt.xticks(fontsize=14, rotation=90)

4
নোট করুন যে এটি ম্যাটল্যাবের মতো পাইপলট ইন্টারফেসের সাথে কাজ করার সময় ব্যবহৃত হয়। অক্ষ-অবজেক্টের অবজেক্ট-ওরিয়েন্টেড ইন্টারফেসের টিক_প্রেম () পদ্ধতি বা অক্ষের অবজেক্টের সেট_টিক_প্রেমস () পদ্ধতিটি ব্যবহার করা উচিত (অন্যান্য উত্তর দেখুন)।
wombatonfire

54

বিকল্পভাবে, আপনি কেবল এটি করতে পারেন:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 

36
plt.tick_params(axis='both', which='minor', labelsize=12)

এটিই কেবলমাত্র উত্তর যা আপনি যদি নতুন লেবেল সেট না করে ফন্টসাইজ পরিবর্তন করতে চান তবে কাজ করে।
ডেভিড স্ট্যানসবি

@ ডেভিড স্ট্যানস্বে আমি বিশ্বাস করি না এটি সত্য। আমার এই সঠিক সমস্যাটি ছিল (উপরে উল্লিখিত) এবং এই সমাধান থেকে পৃথক একটি বিকল্প পদ্ধতি ব্যবহার করতে সক্ষম হয়েছি। ব্যবহারax.xaxis.set_tick_params(labelsize=20)
কাইল সোয়ানসন

1
সহজ উত্তর, কুঠার বস্তুর রেফারেন্সের প্রয়োজন নেই
jeremy_rutman

26

আরেকটি বিকল্প

আমার পাশাপাশি দুটি প্লট রয়েছে এবং টিক লেবেলগুলি আলাদাভাবে সামঞ্জস্য করতে চাই।

উপরের সমাধানগুলি কাছে ছিল তবে তারা আমার জন্য কাজ করছে না। আমি এই ম্যাটপ্ল্লিটিব পৃষ্ঠা থেকে আমার সমাধানটি পেয়েছি ।

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)

একটি সামান্য সূক্ষ্মতা ... আমি জানি ... তবে আমি আশা করি এটি কাউকে সহায়তা করবে :)

বোনাস পয়েন্টস যদি কেউ জানে কীভাবে দৈর্ঘ্যের লেবেলের ক্রমের ফন্টের আকারটি সামঞ্জস্য করতে হয়।

এখানে চিত্র বর্ণনা লিখুন


22

ম্যাটপ্লটলিবের বর্তমান সংস্করণগুলিতে, আপনি এটি করতে পারেন axis.set_xticklabels(labels, fontsize='small')


1
এটি আপনাকেও নির্দিষ্ট করতে বাধ্য labelsকরে। আমরা কেবল হরফ আকার পরিবর্তন করতে পারলে এটি আরও ভাল।
গুইমতে

16

আপনি এর মতো একটি লাইনের সাথে ফন্টসাইজের মতো লেবেল প্রদর্শনের পরামিতিগুলিও পরিবর্তন করতে পারেন:

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]

1
আমি মনে করি যে পার্শ্ব প্রতিক্রিয়া আছে তালিকা বোধগম্য ব্যবহার সেরা অভ্যাস নয়। আমি পরিবর্তে লুপের জন্য একটি মান ব্যবহার করার পরামর্শ দেব।
jjmontes

14

ছোট ফন্টের জন্য, আমি ব্যবহার করি

ax1.set_xticklabels(xticklabels, fontsize=7)

এবং এটি কাজ করে!


আপনি কীভাবে অষ্টিক্লাবলগুলি সংজ্ঞায়িত করবেন?
এমএল স্টুডেন্ট 33

10

নিম্নলিখিত আমার জন্য কাজ করেছে:

ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)

উপরের সুবিধাটি হ'ল আপনাকে সরবরাহ করার দরকার arrayনেই labelsএবং এর উপর কোনও ডেটা দিয়ে কাজ করে axes

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.