Я пытаюсь создать несколько участков для скрипки в одном, используя морского рожка. Фрейм данных, который я использую, включает в себя несколько категориальных значений в одном столбце (для использования на оси x) с массивом значений для каждого категориального значения (для создания сюжета для скрипки для каждого категориального значения). Небольшой рабочий пример может быть таким:
foo = pd.DataFrame(columns =['Names','Values'])
for i in range(10):
foo.loc[i] = ['no'+str(i),np.random.normal(i,2,10)]
Но при попытке
sns.violinplot(x='Names', y='Values', data=foo)
я получаю следующую ошибку
ValueError: Ни один из них x
ни переменная y
представляется числовой.
Теперь я могу быть взломан и просто разделить массив на несколько строк следующим образом:
foo = pd.DataFrame(columns =['Names','Values'])
for i in range(3):
bar = np.random.normal(i,2,10)
for j,b in enumerate(bar):
foo.loc[i*10+j] = ['no'+str(i),b]
, что дает нужный мне график:
![enter image description here](https://i.stack.imgur.com/mkkcJ.png)
Но я предполагаю, что есть более простое решение, без необходимости реструктурировать мой фрейм данных.