我正在尝试使用matplotlib创建一个小提琴图(但是我可以使用seaborn,但是我几乎没有使用它的经验)。我的挑战是我拥有的类别变量实际上是数字,而matplotlib似乎坚持将类别变量映射为整数。我可以通过重新标记轴来解决此问题,但是在我的情况下,变量并不是均匀分布的。因此,我需要将小提琴图均匀分布。这是一个示例,其中我使用的指数分布的比率分别为0.5、1、2和4。这些分布显然不是均匀分布的,我希望能够绘制它们,使水平轴成为“比率”,并且该轴是线性比例尺。
import matplotlib
import random
data = []
for rate in [0.5, 1, 2, 4]:
data.append([])
for counter in range(1000):
data[-1].append(random.expovariate(rate))
fig, ax = plt.subplots()
ax.violinplot(data)
这将产生:
当然,我的真实数据不是那么简单,但是我认为这足以说明我的追求。