একটি ম্যাটপ্ল্লোব চিত্রটিতে কিংবদন্তি সরান


169

কোনও ম্যাটপ্লাটলিব প্লটে কোনও কিংবদন্তি যুক্ত করতে, কেউ কেবল রান করে legend()

কিভাবে একটি প্লট থেকে একটি কিংবদন্তি অপসারণ ?

( legend([])ডেটা থেকে কিংবদন্তিটি খালি করার জন্য আমি এই নিকটে এসেছি closest তবে এটি ডান দিকের উপরের কোণে একটি কুৎসিত সাদা আয়তক্ষেত্রটি ছেড়ে যায়))

উত্তর:


230

ম্যাটপ্লোটিলিবv1.4.0rc4 হিসাবে removeকিংবদন্তি অবজেক্টে একটি পদ্ধতি যুক্ত করা হয়েছে।

ব্যবহার:

ax.get_legend().remove()

অথবা

legend = ax.legend(...)
...
legend.remove()

দেখুন এখানে কমিট জন্য যেখানে এই চালু করা হয়।


2
কিছু কারণে, ax.get_legend().remove()সমাধানটি আমার ক্ষেত্রে কার্যকর হয়নি, যখন দ্বিতীয় সমাধান ( legend = ax.legend() ... legend.remove()) কাজ করেছিল। কারণ আমার ক্ষেত্রে axএকটি ছিল AxesSubplot?
jhan

@naitsirhc, আপনার ভাগ করে নেওয়ার জন্য ধন্যবাদ।
অ্যান্ড্রু লি

90

আপনি যদি কোনও পান্ডাস ডেটাফ্রেম প্লট করতে চান এবং কিংবদন্তিটি সরাতে চান তবে প্লট কমান্ডের প্যারামিটার হিসাবে কিংবদন্তি = কোনওটি যোগ করুন।

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df2 = pd.DataFrame(np.random.randn(10, 5))
df2.plot(legend=None)
plt.show()

86

আপনি কিংবদন্তির set_visibleপদ্ধতিটি ব্যবহার করতে পারেন :

ax.legend().set_visible(False)
draw()

এটি এখানে কিছু সময় আগে আমার অনুরূপ প্রশ্নের জবাবে আমাকে সরবরাহ করা একটি উত্তরের ভিত্তিতে তৈরি is

(এই উত্তরের জন্য ধন্যবাদ জনি - আমি দুঃখিত আমি উত্তরটি উত্তর হিসাবে চিহ্নিত করতে অক্ষম ছিলাম ... কর্তৃপক্ষের অধিকারী কেউ আমার পক্ষে এটি করতে পারে?)


4
এটি কেবল কিংবদন্তিকে আড়াল করে এবং এটি বস্তুটি সরিয়ে দেয় না, তাই না?
vlsd

16

আপনাকে নিম্নলিখিত কোডের লাইন যুক্ত করতে হবে:

ax = gca()
ax.legend_ = None
draw()

gca () বর্তমান অক্ষগুলি হ্যান্ডেলটি ফিরিয়ে দেয় এবং সেই বৈশিষ্ট্যটি রয়েছে_


আপনাকে ধন্যবাদ, কাজ করে বলে মনে হচ্ছে। (কিন্তু কি একটি ভয়ঙ্কর ইন্টারফেস ...) আমি প্রতিস্থাপন করতে সুপারিশ draw()দ্বারা show()। বা ব্যবহারে কোনও বিশেষ সুবিধা রয়েছে draw?
অলিভিয়ার ভার্ডিয়ার

show()গ্রাফ আপডেটটি যদি কোনও প্রোগ্রামের শেষ কমান্ড হত তবে ঠিক হবে। draw()ঠিক আছে, কারণ এটি সাধারণ গ্রাফ আপডেট কমান্ড। উদাহরণস্বরূপ আপনি গ্রাফটি আপডেট করার পরে টার্মিনালে কিছু ইনপুট দেওয়ার জন্য ব্যবহারকারীকে প্রম্পট করতে চাইতে পারেন, যা ব্লকিংয়ের মাধ্যমে করা যায় না show()
এরিক হে লেবিগোট

ঠিক। উত্তর করার জন্য ধন্যবাদ. এখন আমি সম্মতি জানাই যে drawএটি আরও উপযুক্ত (তবে আমি সর্বদা showআমার গ্রাফগুলি আপডেট করার জন্য ব্যবহার করেছি ...)।
অলিভিয়ার ভার্দিয়ার

6

যদি আপনি ডুমুর এবং কুড়াল প্লটের জিনিসগুলি ব্যবহার না করেন তবে আপনি এটির মতো এটি করতে পারেন:

import matplotlib.pyplot as plt

# do plot specifics
plt.legend('')
plt.show()

3

যদি আপনি pyplotহিসাবে কলplt

frameon=False কিংবদন্তির চারপাশে সীমানা অপসারণ করা হয়

এবং '' তথ্য পরিবর্তন করছে যে কোনও ভেরিয়েবল কিংবদন্তির মধ্যে থাকা উচিত নয়

import matplotlib.pyplot as plt
plt.legend('',frameon=False)

1

আমি একটি অক্ষরে নয়, চিত্রটিতে এটিকে যুক্ত করে একটি কিংবদন্তি তৈরি করেছি (ম্যাটপ্ল্লোটিব ২.২.২)। এটি অপসারণ করতে, আমি legendsচিত্রটির বৈশিষ্ট্যটি একটি খালি তালিকায় সেট করেছি:

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(range(10), range(10, 20), label='line 1')
ax2.plot(range(10), range(30, 20, -1), label='line 2')

fig.legend()

fig.legends = []

plt.show()

0

@Naitsirhc থেকে প্রাপ্ত তথ্য অনুযায়ী, আমি সরকারী এপিআই ডকুমেন্টেশন সন্ধান করতে চেয়েছিলাম। এখানে আমার সন্ধান এবং কিছু নমুনা কোড রয়েছে।

  1. আমি একটি matplotlib.Axesবস্তু তৈরি করেছি seaborn.scatterplot()
  2. ax.get_legend()একটি ফিরে আসবে matplotlib.legned.Legendউদাহরণস্বরূপ।
  3. অবশেষে, আপনি .remove()আপনার চক্রান্ত থেকে কিংবদন্তি সরিয়ে ফাংশন কল ।
ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()

আপনি না পরীক্ষা তাহলে matplotlib.legned.Legendএপিআই দস্তাবেজ, আপনি দেখতে পাবেন না .remove()ফাংশন।

কারণ হ'ল matplotlib.legned.Legendউত্তরাধিকারসূত্রে matplotlib.artist.Artist। অতএব, আপনি যখন কল করুন ax.get_legend().remove()মূলত কল matplotlib.artist.Artist.remove()

শেষ পর্যন্ত, আপনি কোডটি দুটি লাইনে সরল করতে পারেন।

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