एक पांडा प्लॉट में x और y लेबल जोड़ें


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

उत्पादन

विशिष्ट कॉलॉर्मैप का उपयोग करने की मेरी क्षमता को संरक्षित करते हुए मैं आसानी से x और y- लेबल कैसे सेट करूं? मैंने देखा कि 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")

यहां छवि विवरण दर्ज करें

या, अधिक संक्षेप में 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='...)इस जवाब में उच्च के रूप में यह ग्राफ अतीत याद किया जा सकता है। यह वास्तव में दोनों कुल्हाड़ियों को सेट करने के लिए सबसे रसीला दृष्टिकोण है, जो कि सामान्य usecase है।
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()

जाहिर है कि आपको स्ट्रिंग्स ly xlabel ’और 'ylabel’ को बदलना होगा कि आप उन्हें क्या चाहते हैं।


यह भी ध्यान दें, आपको कॉल करना है 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')

यहां छवि विवरण दर्ज करें

इस स्थिति में, आपको अभी भी मैन्युअल रूप से वाई-लेबल की आपूर्ति करने की आवश्यकता होगी (जैसे, plt.ylabelअन्य उत्तरों में दिखाया गया है)।


वर्तमान में, 'DataFrame से स्वचालित आपूर्ति' काम नहीं करती है। मैंने सिर्फ यह कोशिश की (पांडा संस्करण 0.16.0, matplotlib 1.4.3) और प्लॉट सही ढंग से उत्पन्न करता है, लेकिन कुल्हाड़ियों पर कोई लेबल नहीं है।

1
@szeitlin क्या आप पांडा github पृष्ठ पर बग रिपोर्ट दर्ज कर सकते हैं? github.com/pydata/pandas/issues
shoyer

तुम्हें पता है क्या, आज कम से कम xlabel काम कर रहा है। शायद कल (?) का उपयोग करने वाले डेटाफ्रेम के बारे में कुछ अजीब था। अगर मैं इसे पुन: पेश कर सकता हूं, तो मैं इसे दर्ज करूंगा!
सेज़िटलिन

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)

ध्यान दें कि आपको भूखंड के बजाय भूखंडों का एक ARRAY मिलता है। इस प्रकार x लेबल सेट करने के लिए आपको कुछ इस तरह से करने की आवश्यकता होगी

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मूल भूखंड के लिए उपयोग कर रहे हैं, तो आप कथानक अनुकूलन के लिए matplotlib का उपयोग कर सकते हैं। हालाँकि, मैं यहाँ एक वैकल्पिक विधि प्रस्तावित करता हूँ 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') 

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.