我正在尝试做一些我不认为会很难的事情,但我无法弄清楚如何让python/matplotlib/pylab做。如何绘制每个元素在列表中的次数
给定一个输入,我想要一个直方图来显示每个元素出现的次数。
给定一个列表
x=range(10)
想我具有单个条输出,10 y值,等于x = 1时,没有任何其他的曲线图。
给定一个列表
x=range(10)
x.append(1)
我想输出有两个杆,9对于x = 1的Y值,1对于x = 2的y值。我怎样才能做到这一点?
我正在尝试做一些我不认为会很难的事情,但我无法弄清楚如何让python/matplotlib/pylab做。如何绘制每个元素在列表中的次数
给定一个输入,我想要一个直方图来显示每个元素出现的次数。
给定一个列表
x=range(10)
想我具有单个条输出,10 y值,等于x = 1时,没有任何其他的曲线图。
给定一个列表
x=range(10)
x.append(1)
我想输出有两个杆,9对于x = 1的Y值,1对于x = 2的y值。我怎样才能做到这一点?
如果你收集你的数据转换成列表的列表,那么你可能会做这样的事情:
import numpy as np
import matplotlib.pyplot as plt
x = [range(10)]
x.append([1])
count = map(len, x)
plt.bar(range(len(count)), count)
plt.show()
注意,第一条具有高度10,而不是9。我不不知道这是你的愿望还是我误解了你的意图。
是这样的吗?此代码使用Counter来计算对象在数组中出现的实例的数量(在这种情况下,计算列表中的整数的次数)。
import matplotlib.pyplot as plt
from collections import Counter
# Create your list
x = range(10)
x.append(1)
# Use a Counter to count the number of instances in x
c = Counter(x)
plt.bar(c.keys(), c.values())
plt.show()
这看起来非常有希望,计数器似乎是一个2.7的功能,我使用2.6(诅咒你的红帽6.3!),但我会探索这一点。 –
此代码给你喜欢你喜欢的人的柱状图:
import matplotlib.pyplot as plt
import numpy as np
y = np.array([0,1,2,3,4,5,6,7,8,9,1])
plt.hist(y);
plt.show()
对于'plt.hist()'+1。这可能是最直接的方法。 – Dan
当然,你必须通过计算元素开始:
>>> from collections import Counter
>>> counts = Counter(my_iterator)
然后,我们希望来计算这些计数:
>>> count_von_count = Counter(counts)
然后你得到你的酒吧的大小。它做成列表,并绘制它:
>>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)]
实例为您的扩展列表:
>>> from collections import Counter
>>> counts = Counter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1])
>>> counts
Counter({1: 2, 0: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1})
>>> count_von_count = Counter(counts.values())
>>> count_von_count
Counter({1: 9, 2: 1})
>>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)]
>>> bars
[0, 9, 1]
你不是故意的'范围(10)'身高1的10条和第9条扩展列表中的高度2(在x = 2)上的高度1和1? – Noctua
你有没有任何示例代码来显示你迄今为止做了什么? – Ffisegydd
我明白你的意思,你真的想要一个计数... – Noctua