基本上,标题。我想做一个直方图,其中条形由堆叠点的列代替。这个具体问题有一个答案in R,但我想留在python中。
非常感谢任何帮助:)
编辑:添加了图片链接 example of what the final result should look like
答案 0 :(得分:0)
不确定你的意思是"带点的直方图,"但你所描述的声音让我想起了seaborn's swarmplot:
sns.swarmplot(x="day", y="total_bill", data=tips);
此处的Swarmplot文档:https://seaborn.pydata.org/generated/seaborn.swarmplot.html
看到你的编辑后,似乎这更像是你正在寻找的东西:
import matplotlib.pyplot as plt
import numpy as np
from collections import Counter
data = np.random.randint(10, size=100)
c = Counter(data)
d = dict(c)
l = []
for i in data:
l.append(d[i])
d[i] -= 1
plt.scatter(data, l)
plt.show()
我个人认为swarmplot看起来好多了,但不管你的船是什么漂浮。
答案 1 :(得分:0)
在matplotlib或其衍生物(我熟悉的)中没有任何开箱即用的功能。幸运的是,pandas.Series.value_counts()
为我们做了很多繁重的工作:
import numpy
from matplotlib import pyplot
import pandas
numpy.random.seed(0)
pets = ['cat', 'dog', 'bird', 'lizard', 'hampster']
hist = pandas.Series(numpy.random.choice(pets, size=25)).value_counts()
x = []
y = []
for p in pets:
x.extend([p] * hist[p])
y.extend(numpy.arange(hist[p]) + 1)
fig, ax = pyplot.subplots(figsize=(6, 6))
ax.scatter(x, y)
ax.set(aspect='equal', xlabel='Pet', ylabel='Count')
这让我: