আমি কীভাবে ম্যাটপ্লোটিলেব উপরের এবং ডান অক্ষটি সরাতে পারি?


133

ডিফল্ট "বাক্সযুক্ত" অক্ষ শৈলীর পরিবর্তে আমি কেবল বাম এবং নীচের অক্ষটিই রাখতে চাই, অর্থাত:

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

এটি সহজ হওয়া উচিত তবে আমি ডক্সে প্রয়োজনীয় বিকল্পগুলি খুঁজে পাচ্ছি না।

উত্তর:


153

এখানে সরকারী ওয়েবসাইট থেকে প্রস্তাবিত ম্যাটপ্লটলিব 3 সমাধান রয়েছে :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

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


2
এটি ম্যাটপ্লল্টিবের নতুন সংস্করণগুলিতে স্বীকৃত উত্তরের চেয়ে ভাল।
flledgling

3
নতুনদের জন্য অতিরিক্ত প্রশ্ন: ম্যাটপ্ল্লিটিব এপিআই ডকটির উপর ভিত্তি করে আপনি এই উত্তরটি কোথায় পাবেন? আমি যদি সেখানে যাই: matplotlib.org/api/axes_api.html আমি spineঅবজেক্টটির কোনও রেফারেন্স দেখতে পাচ্ছি না এবং আমি এই কীওয়ার্ডটি অনুমান করতে পারিনি।
এরিক বুরেল

63

বিকল্পভাবে, এটি

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

ঘোরানো লেবেল সমর্থন না হারিয়ে কোনও অক্ষের উপরে একই প্রভাব অর্জন বলে মনে হচ্ছে।

(Matplotlib 1.0.1; সমাধান দ্বারা অনুপ্রাণিত এই )।


33

1.3.0 সংস্করণে এখন (2013-10) ম্যাটপ্লটলিব [সম্পাদনা করুন] যা এতে অন্তর্ভুক্ত রয়েছে

সেই ক্ষমতাটি আসলে সবেমাত্র যুক্ত হয়েছিল এবং এটির জন্য আপনার সাবভারশন সংস্করণটি প্রয়োজন। আপনি উদাহরণ কোড দেখতে পারেন এখানে

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

[সম্পাদনা] ম্যাটপ্ল্লোলিব 0.99.0 আরসি 1 সবেমাত্র প্রকাশিত হয়েছিল এবং এতে এই ক্ষমতা অন্তর্ভুক্ত রয়েছে।


নিশ্চিত করার চেষ্টা করুন আপনি matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/… এ টিক-চিহ্ন সমর্থন অসম্পূর্ণ হওয়ার আগে এবং উপরেরটি যেমন ঘোরানো লেবেলগুলি ব্যবহার করার আগে সতর্কতাটি পড়েছেন !
টিমডে

দেখে মনে হচ্ছে এটি কীভাবে আপনি অক্ষটি তৈরি করেন তার উপর নির্ভর করে। উত্পন্ন অক্ষগুলি mpl.subplotsকি এভাবে ব্যবহার করা যায় না?
স্টিফান ভ্যান ডের ওয়াল্ট

8
উদাহরণের লিঙ্কটি এখন ভেঙে গেছে।
mkosmala

10

(এখানে বিস্তৃত উত্তর ছাড়াও এটি একটি এক্সটেনশনের মন্তব্য of


মনে রাখবেন যে আমরা এই তিনটি উপাদানকে একে অপরের থেকে আলাদাভাবে আড়াল করতে পারি:

  • সীমানাটি লুকানোর জন্য (ওরফে "মেরুদণ্ড"): ax.set_frame_on(False)বাax.spines['top'].set_visible(False)

  • টিক্সগুলি আড়াল করতে: ax.tick_params(top=False)

  • লেবেলগুলি গোপন করতে: ax.tick_params(labeltop=False)


সম্ভাবনার চমৎকার সংক্ষিপ্তসার +1
প্রিয়.বি। জেসুস

9

আপনার যদি টিক্স এবং এ জাতীয় (যেমন গুণগত চিত্রের প্লট করার জন্য) প্রয়োজন না হয় তবে আপনি এই দ্রুত কাজটি করতে পারেন:

অক্ষটি অদৃশ্য করুন (যেমন সহ plt.gca().axison = False) এবং তারপরে এগুলি ম্যানুয়ালি আঁকুন plt.arrow


1
এটি স্পাইনগুলি সরিয়ে ফেলবে বলে মনে হচ্ছে তবে টিক চিহ্নগুলি জায়গায় রেখে দিন। পাশাপাশি টিক্স অপসারণ করার কোনও ধারণা?
রব ইয়ং

2
@ রব: আপনি ঠিক বলেছেন, আমি যে স্ক্রিপ্টটির কথা ভাবছিলাম তাতে আমি আসলে একটি ভিন্ন সমাধান ব্যবহার করেছি। আমি আমার উত্তর পরিবর্তন করেছি, এটি এখন কাজ করা উচিত, তবে সাধারণভাবে উপরে গৃহীত সমাধানটি আরও ভাল।
নিকো

9

লাইব্রেরি সিবর্ন এটিকে ফাংশন ঘৃণা () দিয়ে তৈরি করেছে।

শুধু যোগ কর:

import seaborn as sns

এখন আপনার গ্রাফ তৈরি করুন। এবং শেষে যুক্ত করুন:

sns.despine()

আপনি যদি ফাংশনের কিছু ডিফল্ট প্যারামিটার মানগুলি দেখেন তবে এটি উপরের এবং ডান মেরুদণ্ডটিকে সরিয়ে দেয় এবং নীচের এবং বাম মেরুদণ্ডটি রাখে:

sns.despine(top=True, right=True, left=False, bottom=False)

এখানে আরও ডকুমেন্টেশন দেখুন: https://seaborn.pydata.org/generated/seaborn.despine.html


7

আপনার যদি আপনার সমস্ত প্লট থেকে মুছে ফেলার দরকার হয় তবে আপনি স্টাইল সেটিংসে (স্টাইল শীট বা আরসিপ্যারাম) স্পাইনগুলি সরাতে পারেন। উদাহরণ:

import matplotlib as mpl

mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False

আপনি যদি সমস্ত স্পাইনগুলি সরাতে চান:

mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.