1 ~ 5 の数字をそれぞれ約 100 万回含むリストの箱ひげ図を作成したいとします。
このようなリストのサイズは約 5 000 000 になりますが、dict として表されると、スペースはまったく必要ありません。
s = {1: 1000000, 2: 1000000, 3: 1000000, 4: 1000000, 5:1000000}
問題は、その辞書の箱ひげ図を作成しようとすると、エラーが発生することです
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
ax.boxplot(s)
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/axes.py", line 5462, in boxplot
if not hasattr(x[0], '__len__'):
KeyError: 0
s
すべての要素をリストに入れることなく、辞書をボックスプロットする賢い方法はありますか?
コメントは私が試してみることを提案しました
boxplot(n for n, count in s.iteritems() for _ in xrange(count))
しかし、これは
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
boxplot(n for n, count in s.iteritems() for _ in xrange(count))
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2134, in boxplot
ret = ax.boxplot(x, notch, sym, vert, whis, positions, widths, patch_artist, bootstrap)
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/axes.py", line 5462, in boxplot
if not hasattr(x[0], '__len__'):
TypeError: 'generator' object has no attribute '__getitem__'