IPython Pylab:从字典打印直方图

3
我有一个字典d
d = {'apples': 5, 'oranges': 2, 'bananas': 2, 'lemons': 1, 'coconuts': 1}

我怎样才能以图表的形式展示它,使用 (pylab/matplotlib/pandas/适用于简单直方图的其它工具) 显示为直方图?

我想要的是以下内容的图形类比:

X
X
X
X  X  X
X  X  X  X  X
-------------
A  O  B  L  C

可能是从字典绘制直方图的重复问题。 - Franck Dernoncourt
2个回答

3

使用matplotlib:

import matplotlib.pyplot as plt
d = {'apples': 5, 'oranges': 2, 'bananas': 2, 'lemons': 1, 'coconuts': 1}

plt.bar(range(len(d)), d.values(), align='center')
plt.xticks(range(len(d)), d.keys(), rotation=25)

输入图像描述

或者,让它变得丰富多彩:

import numpy as np
import matplotlib.pyplot as plt
d = {'apples': 5, 'oranges': 2, 'bananas': 2, 'lemons': 1, 'coconuts': 1}

jet = plt.get_cmap('jet')
N = len(d)
plt.bar(range(N), d.values(), align='center', color=jet(np.linspace(0, 1.0, N)))
plt.xticks(range(N), d.keys(), rotation=25)

enter image description here


实际上,您的示例在我使用 ipython qtconsole --pylab=inline 内联绘制图时无法正常工作。它只能在外部窗口中显示图形时才能正常工作。 - user1968963
我已经修改了代码,使得图表可以在ipython qtconsole中显示。 - unutbu
谢谢,但它仍然不能正常工作:plt.bar绘制直方图(柱形图),但是使用数字而不是标签。第二个命令plt.xticks绘制了一个带有标签的第二个空图(没有柱形)。 - user1968963
在执行之前,您必须将所有命令粘贴到一个单元格中。 - unutbu
你说的“粘贴到一个单元格”是什么意思?什么是单元格? - user1968963
“cell”指的是一个输入行——以In[...]:开头的东西。这个术语可能是从Mathematica遗留下来的。当你运行ipython notebook时,它们看起来更像单元格。 - unutbu

1

你可以直接调用plot并设置`kind='bar'`:

In [252]:

d = {'apples': [5], 'oranges':[2], 'bananas': [2], 'lemons': [1], 'coconuts': [1]}
df = pd.DataFrame(d)
df.plot(kind='bar')
Out[252]:
<matplotlib.axes.AxesSubplot at 0xb54b0f0>

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接