একটি পান্ডাস প্লটে এক্স এবং ওয়াই লেবেল যুক্ত করুন


196

ধরুন আমার কাছে নিম্নলিখিত কোড রয়েছে যা পান্ডাস ব্যবহার করে খুব সাধারণ কিছু প্লট করে:

import pandas as pd
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                   index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10, 
         title='Video streaming dropout by category')

আউটপুট

নির্দিষ্ট রঙের মানচিত্র ব্যবহারের ক্ষমতাটি সংরক্ষণ করার সময় আমি কীভাবে সহজেই এক্স এবং ওয়াই-লেবেল সেট করব? আমি লক্ষ্য করেছি যে plot()পান্ডাস ডেটাফ্রেমের জন্য মোড়কের জন্য নির্দিষ্ট কোনও পরামিতি লাগে না।

উত্তর:


328

df.plot()ফাংশন একটি ফেরৎ matplotlib.axes.AxesSubplotঅবজেক্ট। আপনি সেই বস্তুর উপর লেবেল সেট করতে পারেন।

ax = df2.plot(lw=2, colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category')
ax.set_xlabel("x label")
ax.set_ylabel("y label")

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

অথবা, আরও succinctly: ax.set(xlabel="x label", ylabel="y label")

বিকল্পভাবে, সূচক এক্স-অক্ষের লেবেলটি স্বয়ংক্রিয়ভাবে সূচক নামতে সেট করা থাকে যদি এর একটি থাকে। তাই df2.index.name = 'x label'খুব কাজ করবে।


71
X এবং y লেবেলগুলিকে যুক্তি হিসাবে যুক্ত করা যায় না এমন কোনও কারণ আছে pd.plot()? অতিরিক্ত সংক্ষিপ্ত রুপ দেওয়া pd.plot()ওভার plt.plot()মনে হয় এটা জানার জন্য হবে এটি আরও বেশি পরিবর্তে কলে থাকার সংক্ষিপ্ত করতে ax.set_ylabel()
ক্রিপি

আমি যখন করি তখন ax.set_ylabel("y label")এটি একটি ত্রুটি ফেরায় 'list' object is not callable। কোন ধারণা?
লেজার ইউ

মজাদার. আমি জানি না এটির সংস্করণ নির্ভর কি না তবে আমাকে করতে হবেax.axes.set_ylabel("y label")
লেজার ইউ

2
আমি মনে করি আপনি ax.set(xlabel='...)এই উত্তরে উচ্চতর স্থান দিতে পারেন কারণ এটি গ্রাফটি হারিয়ে যেতে পারে। এটি সত্যই উভয় অক্ষ সেট করার জন্য সর্বাধিক সংযোগ পদ্ধতি, যা সাধারণ ইউজকেস।
poulter7

আপনি কিভাবে অবস্থান সেট করবেন?
ওডিসিও

43

আপনি এটি এর মতো করে ব্যবহার করতে পারেন:

import matplotlib.pyplot as plt 
import pandas as pd

plt.figure()
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                   index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10,
         title='Video streaming dropout by category')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.show()

স্পষ্টতই আপনি স্ট্রিংগুলির 'xlabel' এবং 'ইলাবেল' আপনি যেভাবে চান তা প্রতিস্থাপন করতে হবে।


আরো উল্লেখ্য, আপনি ফোন করতে হবে plt.xlabel()পরে ইত্যাদি df.plot()কল একটি "পূর্ববর্তী" চক্রান্ত পরিবর্তন করতে হবে -, আগে, কারণ অন্যথায় আপনি দুই প্লট পেতে। একই জিনিস জন্য যায় plt.title()
টমসজ গেন্ডার

30

আপনি যদি নিজের ডেটাফ্রেমের কলাম এবং সূচি লেবেল করেন, পান্ডাস স্বয়ংক্রিয়ভাবে উপযুক্ত লেবেল সরবরাহ করবে:

import pandas as pd
values = [[1, 2], [2, 5]]
df = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                  index=['Index 1', 'Index 2'])
df.columns.name = 'Type'
df.index.name = 'Index'
df.plot(lw=2, colormap='jet', marker='.', markersize=10, 
        title='Video streaming dropout by category')

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

এই ক্ষেত্রে, আপনাকে এখনও ম্যানুয়ালি y- লেবেল সরবরাহ করতে হবে (উদাহরণস্বরূপ, plt.ylabelঅন্যান্য উত্তরের হিসাবে দেখানো হয়েছে)।


বর্তমানে, সেই 'ডেটাফ্রেম থেকে স্বয়ংক্রিয় সরবরাহ' কাজ করে না। আমি কেবল এটি চেষ্টা করেছি (প্যান্ডাস সংস্করণ 0.16.0, ম্যাটপ্ল্লোলিব 1.4.3) এবং প্লটটি সঠিকভাবে উত্পন্ন হয়েছে, তবে অক্ষগুলিতে কোনও লেবেল নেই।
szeitlin

1
@ সিজিটলিন আপনি কি দয়া করে পান্ডাস গিথুব পৃষ্ঠায় একটি বাগ রিপোর্ট ফাইল করতে পারবেন? github.com/pydata/pandas/issues
shoyer

আপনি কি জানেন, আজ কমপক্ষে xlabel কাজ করছে। আমি গতকাল (?) যে ডেটাফ্রেমটি ব্যবহার করছিলাম সে সম্পর্কে আজব কিছু ছিল was আমি যদি এটি পুনরুত্পাদন করতে পারি, আমি এটি ফাইল করব!
szeitlin

20

axis.setফাংশন সহ উভয় লেবেল একসাথে সেট করা সম্ভব । উদাহরণটি দেখুন:

import pandas as pd
import matplotlib.pyplot as plt
values = [[1,2], [2,5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2'])
ax = df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category')
# set labels for both axes
ax.set(xlabel='x axis', ylabel='y axis')
plt.show()

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


3
আমি .set(xlabel='x axis', ylabel='y axis')সমাধানটি পছন্দ করি কারণ এটি আমাকে set_xlabel এবং set_ylabel প্লট পদ্ধতির বিপরীতে সব কিছু এক লাইনে রেখে দেয়। আমি অবাক হয়েছি কেন তারা সবাই (সেট পদ্ধতি সহ, যাইহোক) প্লটের অবজেক্ট বা কমপক্ষে কিছু থেকে উত্তরাধিকার সূত্রে ফিরে আসে না।
দোষ-সহনশীল

14

আপনি যেখানে ব্যবহার করেন সেই ক্ষেত্রে pandas.DataFrame.hist:

plt = df.Column_A.hist(bins=10)

নোট করুন যে আপনি প্লটের পরিবর্তে প্লটের একটি আরআর পাবেন। এইভাবে এক্স লেবেল সেট করতে আপনাকে এই জাতীয় কিছু করতে হবে

plt[0][0].set_xlabel("column A")

10

কি সম্পর্কে ...

import pandas as pd
import matplotlib.pyplot as plt

values = [[1,2], [2,5]]

df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2'])

(df2.plot(lw=2,
          colormap='jet',
          marker='.',
          markersize=10,
          title='Video streaming dropout by category')
    .set(xlabel='x axis',
         ylabel='y axis'))

plt.show()

2

pandasmatplotlibবেসিক ডেটাফ্রেম প্লটের জন্য ব্যবহার করে । সুতরাং, আপনি যদি pandasমৌলিক প্লটের জন্য ব্যবহার করছেন তবে আপনি প্লট কাস্টমাইজেশনের জন্য ম্যাটপ্ল্লোলিব ব্যবহার করতে পারেন। তবে, আমি এখানে একটি বিকল্প পদ্ধতি প্রস্তাব করছি seabornযা ব্যবহার করে যা মৌলিক স্তরে না গিয়ে প্লটটির আরও কাস্টমাইজেশন করতে দেয় matplotlib

কাজের কোড:

import pandas as pd
import seaborn as sns
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                   index=['Index 1', 'Index 2'])
ax= sns.lineplot(data=df2, markers= True)
ax.set(xlabel='xlabel', ylabel='ylabel', title='Video streaming dropout by category') 

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

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