Я пытаюсь создать сценарий скрипки с помощью matplotlib (но я мог бы использовать seaborn, но у меня почти нет опыта с этим). Моя проблема в том, что категориальная переменная, которая у меня есть, на самом деле numeri c, а 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)
Это дает:
введите описание изображения здесь
Конечно, мои настоящие данные не так просты, но я думаю, что это достаточно хорошо иллюстрирует то, что мне нужно.