2013-09-27 58 views
0

我試圖做一個簡單的對數柱狀圖:PyPlot巴崩潰,登錄=真

import matplotlib.pyplot as plt 
plt.bar(range(10), [4**i for i in range(10)], log=True) 
plt.show() 

它與崩潰:

File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\pyplot.py", line 2383, in bar 


ret = ax.bar(left, height, width=width, bottom=bottom, **kwargs) 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\axes.py", line 4903, in bar 
    self.add_patch(r) 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\axes.py", line 1572, in add_patch 
    self._update_patch_limits(p) 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\axes.py", line 1590, in _update_patch_limits 
    xys = patch.get_patch_transform().transform(vertices) 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\patches.py", line 582, in get_patch_transform 
    self._update_patch_transform() 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\patches.py", line 578, in _update_patch_transform 
    bbox = transforms.Bbox.from_bounds(x, y, width, height) 
    File "C:\Program Files (x86)\Python33\lib\site-packages\matplotlib\transforms.py", line 786, in from_bounds 
    return Bbox.from_extents(x0, y0, x0 + width, y0 + height) 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 

當我使用日誌=假,它的工作原理。我trell plt.yscale('日誌'),但然後酒吧消失。我不明白,在這種簡單的情況下,我怎麼能夠使用log參數錯誤。

+0

它爲我在matplotlib 1.2.0和2.7.3的Python我 – jabaldonedo

+0

可以重現你的錯誤與matplotlib 1.2.1,但不能與1.3.0 –

+0

上matplotlib 1.3.0和Python 3.3了測試。 0(MacOSX),並且作品 – jabaldonedo

回答

4

這似乎是您的matplotlib版本中的一個錯誤。儘管參數bottom 的缺省聲明爲0,但添加一個額外的關鍵字參數會導致使用bottom失敗的算術運算符bottom=None

作爲解決方法,您可以將bottom自己設置爲默認值。

import numpy as np 
import matplotlib.pyplot as plt 
x = np.arange(10) 
plt.bar(x, 4**x, bottom=0, log=True) 
plt.show() 
+0

完美運行,謝謝! – Iva