ম্যাটপ্লোটিলেব প্লটে অক্ষ পাঠ্য লুকানো হচ্ছে


369

আমি অক্ষগুলির দুটিতে টিকমার্ক বা সংখ্যা ছাড়াই একটি চিত্র অঙ্কনের চেষ্টা করছি (আমি চিরাচরিত অর্থে অক্ষ ব্যবহার করি, ম্যাটপ্ল্লোব নামকরণ নয়!)। আমি যে বিষয়টি সামনে এসেছি তা হল ম্যাটপ্ল্লোটিব একটি মান এন বিয়োগ করে x (y) টিক্লেবেলগুলি সামঞ্জস্য করে, তারপরে অক্ষের শেষে এন যুক্ত করে।

এটি অস্পষ্ট হতে পারে, তবে নিম্নলিখিত সরলীকৃত উদাহরণটি '6.18' এর সাথে এন এর আপত্তিকর মান হিসাবে বিষয়টি তুলে ধরে:

import matplotlib.pyplot as plt
import random
prefix = 6.18

rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')

frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
    xlabel_i.set_visible(False)
    xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
    xlabel_i.set_fontsize(0.0)
    xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
    tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
    tick.set_visible(False)

plt.show()

আমি তিনটি জিনিস জানতে চাই:

  1. এই আচরণটি কীভাবে প্রথম স্থানে বন্ধ করা যায় (যদিও বেশিরভাগ ক্ষেত্রে এটি কার্যকর, তবে এটি সর্বদা হয় না!) আমি সন্ধান করেছি matplotlib.axis.XAxisএবং উপযুক্ত কিছু খুঁজে পাচ্ছি না

  2. আমি কীভাবে এনকে অদৃশ্য করতে পারি (অর্থাত্ X.set_visible(False))

  3. উপরোক্ত উপায় কি ভাল উপায় আছে? আমার চূড়ান্ত প্লটটি যদি কোনও প্রাসঙ্গিক হয় তবে কোনও চিত্রের 4x4 সাবপ্লট হবে।


আমি এখানে কিছু উত্তর আসলে উত্তর উত্তর যদি। আমার কাছে এটা প্রশ্ন জিজ্ঞেস মতো দেখায় কিভাবে অফসেট পরিত্রাণ পেতে । তবুও সমস্ত উত্তর বিভিন্ন উপায় দেখায় যে কীভাবে সমস্ত টিক্লেবেলগুলি থেকে মুক্তি পাওয়া যায়। যদি প্রশ্নগুলির উত্তরগুলি ছাড়িয়ে যায় তবে উত্তরগুলির সমাধানগুলি কী সরবরাহ করে তা জিজ্ঞাসা করার জন্যই কেউ প্রশ্ন সম্পাদনা করা উচিত?
ImportanceOfBeingErnest

উত্তর:


469

প্রতিটি উপাদান লুকানোর পরিবর্তে আপনি পুরো অক্ষটি গোপন করতে পারেন:

frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)

অথবা, আপনি টিকিটগুলি একটি খালি তালিকায় সেট করতে পারেন:

frame1.axes.get_xaxis().set_ticks([])
frame1.axes.get_yaxis().set_ticks([])

এই দ্বিতীয় বিকল্পটিতে, আপনি এখনও ব্যবহার করতে পারেন plt.xlabel()এবং plt.ylabel()অক্ষগুলিতে লেবেল যুক্ত করতে পারেন।


2
আরে ওফরি - দারুণ, ধন্যবাদ, তবে এখন (কেবল বিশ্রী হতে) আমি যদি xlabel () যুক্ত করতে চাই তবে কী হয়? ম্যানুয়ালি কোনও পাঠ্য উইজেট স্থাপন করা ছাড়া অন্য।
ডেভ

5
আপনি কীভাবে এই উদাহরণটিকে 3 ডি পর্যন্ত প্রসারিত করতে পারেন? ax = plt.gca (প্রক্ষেপণ = '3 ডি'), ax.axes.get_zaxis ()। সেট_ভিজিবল (মিথ্যা) দেয়'Axes3DSubplot' object has no attribute 'get_zaxis'
user989762

13
এই উত্তরটি গ্রিড লাইনগুলি প্রদর্শন করার অনুমতি দেয় না। @ সাওলো কাস্ত্রোর উত্তরটি যদিও ...
evan54

শুধু @Saullo কাস্ত্রোর উত্তর যা সমস্যা সংশোধন দেখেছি: সমস্যা হলো যখন X_AXIS অদৃশ্য সেট করা থাকে, গ্রিড dsappears :( সম্পাদনা করুন।
শৈলেন

1
@ user989762 আপনার ক্ষেত্রে এই পদ্ধতিটি কাজ করবে না, এমনকি নয় get_xaxis().set_visible(False)। আমি মনে করি এই ক্ষেত্রে ম্যাটপ্ল্লিটিব কিছু পরামিতি সূচনা করে যেন প্লটটি 2 ডি হয়। ax.set_zticks([])আপনি যা চান তা করবেন
kon psych

222

আপনি যদি গ্রিডের রেখাগুলি রেখে অক্ষের পাঠ্যটি গোপন করতে চান:

frame1 = plt.gca()
frame1.axes.xaxis.set_ticklabels([])
frame1.axes.yaxis.set_ticklabels([])

এরকম set_visible(False)বা set_ticks([])আরো গ্রিড লাইন গোপন থাকবে না।


4
এটি অক্ষটি ভাগ করে এমন সমস্ত সাব-প্লটগুলির জন্য লেবেলগুলি মুছে দেয় : /
এন্ডোলিথ

136

আপনি যদি আমার মতো হন এবং সবসময় অক্ষগুলি পুনরুদ্ধার না করেন, axচিত্রটি ষড়যন্ত্র করার সময়, তবে একটি সহজ সমাধানটি হ'ল

plt.xticks([])
plt.yticks([])

56

পুরানো থ্রেডের কিছুটা হলেও, এটি ম্যাটপ্লটলিবের সর্বশেষতম সংস্করণ ব্যবহার করে একটি দ্রুত পদ্ধতি বলে মনে হচ্ছে:

এক্স-অক্ষের জন্য প্রধান ফর্ম্যাটর সেট করুন

ax.xaxis.set_major_formatter(plt.NullFormatter())

1
আপনি যদি কেবল একটি টিকিটের জন্য এটি করতে চান?
tommy.carstensen

5
হ্যাঁ, এটি কেবলমাত্র লেবেলগুলি আড়াল করার জন্যই দরকারী, কারণ .set_xticks ([]) নিজেও টিক চিহ্নগুলি সরিয়ে দেয়।
zbyszek

49

আমি এখানে কোনও কোড স্নিপেটের (এমনকি উত্তরে গ্রহণযোগ্য একটি) এর উপর ভিত্তি করে সীমানা বা অক্ষের ডেটা ছাড়াই কোনও চিত্র সরবরাহ করতে সক্ষম হইনি। কিছু এপিআই ডকুমেন্টেশনের মাধ্যমে খনন করার পরে, আমার চিত্রটি রেন্ডার করার জন্য আমি এই কোডটিতে অবতরণ করেছি

plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off')
plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0)

আমি tick_paramsকলটি মূলত রেন্ডার হতে পারে এমন কোনও অতিরিক্ত তথ্য বন্ধ করার জন্য কলটি ব্যবহার করেছি এবং আমার আউটপুট ফাইলে আমার একটি নিখুঁত গ্রাফ রয়েছে।


1
যখন অক্ষগুলি ভাগ করা হয় তখন সেট_টিক্যালাবেলের ভিত্তিতে সমাধানগুলি ভাগ করা অক্ষগুলিতে প্রচার করে। টিক_প্যারামের ভিত্তিতে কেবল এই সমাধানটিই আমার পক্ষে কাজ করে was
খ্রিস্টান ও'রেলি

39

প্রক্রিয়াটি সহজ করার জন্য আমি এই চিত্রটি কোড করেছি।

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)

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

এই কমান্ডগুলি ব্যবহার করে আপনি চিত্রটির উপরে সম্পূর্ণ নিয়ন্ত্রণ রাখতে পারেন, উত্তরটি সম্পূর্ণ করতে আমি স্প্লাইনের উপরও নিয়ন্ত্রণ যুক্ত করেছি:

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# X AXIS -BORDER
ax.spines['bottom'].set_visible(False)
# BLUE
ax.set_xticklabels([])
# RED
ax.set_xticks([])
# RED AND BLUE TOGETHER
ax.axes.get_xaxis().set_visible(False)

# Y AXIS -BORDER
ax.spines['left'].set_visible(False)
# YELLOW
ax.set_yticklabels([])
# GREEN
ax.set_yticks([])
# YELLOW AND GREEN TOGHETHER
ax.axes.get_yaxis().set_visible(False)

ax.set_xticklabels([])এবং ax.set_xticks([])আমার পক্ষে কাজ করে নি, তবে ax.axes.get_xaxis().set_visible(False)করেছে।
হোমরো

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
জেসন এস

6

অবজেক্ট অরিয়েন্টেড এপিআই ব্যবহার করার সময়, Axesঅক্ষটির পাঠ্য অপসারণের জন্য অবজেক্টটির দুটি কার্যকর পদ্ধতি রয়েছে set_xticklabels()এবং set_xticks()

বলুন আপনি ব্যবহার করে একটি প্লট তৈরি করুন

fig, ax = plt.subplots(1)
ax.plot(x, y)

আপনি যদি কেবল টিক লেবেলগুলি সরাতে চান তবে আপনি ব্যবহার করতে পারেন

ax.set_xticklabels([])

বা টিক্স সম্পূর্ণরূপে অপসারণ করতে, আপনি ব্যবহার করতে পারেন

ax.set_xticks([])

আপনি টিকগুলি কোথায় চান তা নির্দিষ্ট করে দেওয়ার জন্য এবং কীভাবে আপনি সেগুলি লেবেলযুক্ত চান তা এই পদ্ধতিগুলি দরকারী। খালি তালিকা পাস করার ফলে যথাক্রমে কোনও টিকস, বা কোনও লেবেলই আসে না।


2

একটি কৌশলটি এটিকে আড়াল করার জন্য টিক লেবেলের রঙ সাদা হিসাবে নির্ধারণ করা যেতে পারে!

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