2014-01-09 55 views
20

我正在做一個相當簡單的柱狀圖中使用Python的大熊貓直方圖對數刻度

results.val1.hist(bins=120)

工作正常大熊貓,但我真的希望有在y軸上日誌規模,這通常我(可能是不正確的)這樣做:

fig = plt.figure(figsize=(12,8)) 
ax = fig.add_subplot(111) 
plt.plot(np.random.rand(100)) 
ax.set_yscale('log') 
plt.show() 

如果我更換了與大熊貓命令plt命令,所以我有:

fig = plt.figure(figsize=(12,8)) 
ax = fig.add_subplot(111) 
results.val1.hist(bins=120) 
ax.set_yscale('log') 
plt.show() 

導致同樣的錯誤的多個副本:

Jan 9 15:53:07 BLARG.local python[6917] <Error>: CGContextClosePath: no current point. 

我得到數比例直方圖,但它只有在酒吧的頂部線條,但沒有豎線或顏色。我在做一些可怕的錯誤,或者這只是熊貓不支持?

編輯:

從保羅·H代碼我換成

新增bottom=0.1hist呼叫解決了這個問題,我想有某種鴻溝的零事,或什麼的。

謝謝

回答

31

很難診斷沒有任何數據。對我來說,以下工作:

import numpy as np 
import matplotlib.pyplot as plt 
import pandas 
series = pandas.Series(np.random.normal(size=2000)) 
fig, ax = plt.subplots() 
series.hist(ax=ax, bins=100, bottom=0.1) 
ax.set_yscale('log') 

enter image description here

這裏的關鍵是,你傳遞ax直方圖功能,並且指定bottom因爲是對數尺度沒有零值。

+0

查看評論主後。 – TristanMatthews

+0

對於老版本的熊貓(0.9),我發現frame [['var']]。hist(ax = ax)不會被設置爲日誌比例,但frame.var.hist (ax = ax)是。 –

23

我建議使用log=True參數在pyplot HIST功能:

import matplotlib.pyplot as plt  
plt.hist(df['column_name'], log=True) 
+7

這使y軸對數。那麼x軸呢? – radiantRazor

7

讓PA的解決方案是最簡單,最正確的一個是這個問題。由於我沒有代表評論,因此將其寫爲答案。

對於來自熊貓直構建直方圖,一些args來傳遞到matplotlib.hist方法無論如何,所以:

results.val1.hist(bins = 120, log = True) 

會產生你所需要的。