আবর্তিত অষ্টিক্লাবেলগুলি তাদের নিজ নিজ xticks সহ সারিবদ্ধ করা


140

নীচের চিত্রটির x অক্ষটি পরীক্ষা করুন। আমি কীভাবে লেবেলগুলিকে কিছুটা বাম দিকে সরিয়ে নিতে পারি যাতে তারা তাদের নিজ নিজ টিকগুলির সাথে সারিবদ্ধ হয়?

আমি লেবেলগুলি ব্যবহার করে ঘুরছি:

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

তবে, আপনি দেখতে পাচ্ছেন যে আবর্তনটি পাঠ্য লেবেলের মাঝখানে থাকে। এটি এটিকে দেখতে ডানদিকে স্থানান্তরিত করার মতো করে তোলে।

পরিবর্তে আমি এটি ব্যবহার করার চেষ্টা করেছি:

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

... তবে এটি আমার ইচ্ছা মতো করে না। এবং প্যারামিটারের "anchor"জন্য অনুমোদিত একমাত্র মান বলে মনে হচ্ছে rotation_mode

উদাহরণ

উত্তর:


202

আপনি টিক্লেবেলের অনুভূমিক প্রান্তিককরণ সেট করতে পারেন, নীচের উদাহরণটি দেখুন। আপনি যদি ঘোরানো লেবেলের চারপাশে একটি আয়তক্ষেত্রাকার বাক্স কল্পনা করেন তবে আপনি আয়তক্ষেত্রের কোন দিকটি টিকপয়েন্টের সাথে সারিবদ্ধ হতে চান?

আপনার বিবরণ দেওয়া, আপনি চান: হা = 'ডান'

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])

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


15
আপনি xlabels = ax.get_xticklabels()যদি কেবল বিদ্যমান লেবেলগুলি ব্যবহার করতে চান তবে আপনিও ব্যবহার করতে পারেন।
বেন

থ্যাঙ্কস রুটার, এটি একটি দুর্দান্ত উদাহরণ, আমার দিনটি বাঁচিয়েছে!
আলিসা

13

লেবেলগুলি ঘোরানো অবশ্যই সম্ভব। নোট করুন যদিও এটি করা পাঠ্যের পাঠ্যতা হ্রাস করে। একটি বিকল্প হ'ল এই জাতীয় কোড ব্যবহার করে বিকল্প লেবেল অবস্থানগুলি:

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)

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

আরও পটভূমি এবং বিকল্পের জন্য, আমার ব্লগে এই পোস্টটি দেখুন


9

একটি সহজ, লুপ-মুক্ত বিকল্প হ'ল [1] এর horizontalalignmentকীওয়ার্ড আর্গুমেন্ট হিসাবে পাঠ্য সম্পত্তিটি ব্যবহার করা xticks। নীচে, মন্তব্য করা লাইনে, আমি xticksপ্রান্তিককরণটিকে "ডান" হতে বাধ্য করেছি ।

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-')

plt.xticks(
        [0,1,2,3,4],
        ["this label extends way past the figure's left boundary",
        "bad motorfinger", "green", "in the age of octopus diplomacy", "x"], 
        rotation=45,
        horizontalalignment="right")    # here
plt.show()

( yticksডিফল্টরূপে টিক দিয়ে ডান প্রান্তটি ইতিমধ্যে সারিবদ্ধ করেছে, তবে ডিফল্টর জন্য xticks"কেন্দ্র" বলে মনে হয়))

[1] আপনি "টেক্সট বৈশিষ্ট্য" বাক্যাংশটি অনুসন্ধান করলে xticks ডকুমেন্টেশনে বর্ণিত এটি দেখতে পান


3

আপনি যদি xtick লেবেলগুলি পরিবর্তন করতে চান না, আপনি কেবল ব্যবহার করতে পারেন:

plt.xticks(rotation=45)


3
তবে এতে ভুলভাবে প্রান্তিক লেবেলগুলির একই সমস্যা রয়েছে। তবে, @ রতগিয়ারসিএসের কৌশলটি ব্যবহার করতে, কেউ ব্যবহার করতে পারবেনplt.xticks(rotation=45,ha='right')
ফ্রেডেরিক গ্রোহানস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.