2016-01-16 5 views
8

मैं एक पांडस डेटाफ्रेम प्लॉट करने की कोशिश कर रहा हूं, और माध्य और औसत दिखाने के लिए एक लाइन जोड़ रहा हूं। जैसा कि आप नीचे देख सकते हैं, मैं माध्य के लिए एक लाल रेखा जोड़ रहा हूं, लेकिन यह नहीं दिखाता है।पांडा और matplotlib के साथ बार साजिश के शीर्ष पर मीन लाइन

यदि मैं 5 पर एक हरी रेखा खींचने की कोशिश करता हूं, तो यह x = 190 पर दिखाता है। तो स्पष्ट रूप से एक्स मानों को 160, 165, 170, के बजाय 0, 1, 2, ... के रूप में माना जाता है ...

मैं लाइनों को कैसे आकर्षित कर सकता हूं ताकि उनके एक्स मान एक्स अक्ष के मेल खाते हों?

Jupyter से:

DataFrame plot

पूर्ण कोड:

%matplotlib inline 

from pandas import Series 
import matplotlib.pyplot as plt 

heights = Series(
    [165, 170, 195, 190, 170, 
    170, 185, 160, 170, 165, 
    185, 195, 185, 195, 200, 
    195, 185, 180, 185, 195], 
    name='Heights' 
) 
freq = heights.value_counts().sort_index() 


freq_frame = freq.to_frame() 

mean = heights.mean() 
median = heights.median() 

freq_frame.plot.bar(legend=False) 

plt.xlabel('Height (cm)') 
plt.ylabel('Count') 

plt.axvline(mean, color='r', linestyle='--') 
plt.axvline(5, color='g', linestyle='--') 

plt.show() 
+0

यदि आप स्वयं की साजिश रचने कर रहे हैं का एक नमूना पोस्ट कर सकते हैं? –

+0

डेटा सहित पूर्ण स्रोत अब जोड़ा गया है। – oal

उत्तर

5

उपयोग plt.bar(freq_frame.index,freq_frame['Heights']) अपने बार साजिश साजिश। फिर बार freq_frame.index पदों पर होंगे। पांडस इन-बिल्ड बार फ़ंक्शन बार के पदों को निर्दिष्ट करने की अनुमति नहीं देता है, जहां तक ​​मैं कह सकता हूं।

%matplotlib inline 

from pandas import Series 
import matplotlib.pyplot as plt 

heights = Series(
    [165, 170, 195, 190, 170, 
    170, 185, 160, 170, 165, 
    185, 195, 185, 195, 200, 
    195, 185, 180, 185, 195], 
    name='Heights' 
) 
freq = heights.value_counts().sort_index() 

freq_frame = freq.to_frame() 

mean = heights.mean() 
median = heights.median() 

plt.bar(freq_frame.index,freq_frame['Heights'], 
     width=3,align='center') 

plt.xlabel('Height (cm)') 
plt.ylabel('Count') 

plt.axvline(mean, color='r', linestyle='--') 
plt.axvline(median, color='g', linestyle='--') 

plt.show() 

bar plot

संबंधित मुद्दे