Сюжет скрипки с использованием последовательных рядов в качестве оси Y - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь построить сюжет для скрипки из следующих данных (CSV):

,Exp No.,Sensory accuracy(mm),Volume of Data points,Exp 1,Exp 2,Exp 3,Exp 4,Exp 5,Exp 6,Exp 7,Exp 8,Exp 9,Exp 10,Coefficient ,PPIP
0,1,10,3,9948,9998,9961,10042,10049,10029,9975,10020,9986,10002,34.07508050043479,0.4231902824036948
1,2,10,5,10012,10021,9991,10013,9993,10010,9995,9992,10007,10008,10.591401124392268,0.7024168537963643
2,3,10,7,10015,10002,9999,10013,10013,9995,10005,10007,10003,10016,7.223418704310154,0.7758332605676019
3,4,10,10,10019,10006,10006,10013,9995,10007,9996,10014,10002,10004,7.627435858647242,0.766226316659029
4,5,10,15,10010,10012,10014,10010,10014,10018,10006,10006,10009,10010,3.7252889522529364,0.8703132644393902
5,6,15,3,9972,10041,9953,10049,10005,9968,9978,10016,10054,10011,36.0248371112055,0.40966926227828393

Возможно, это легче увидеть на изображении

Data set image

Ось X представлена ​​столбцами «точность датчика» и «объем точек данных».

Я хочу найти способ, чтобы ось Y была представлена ​​данными из опыта 1-10 для каждого из X-параметры.

Есть ли простой способ сделать это без переформатирования таблицы в отдельные строки эксперимента?

1 Ответ

0 голосов
/ 23 марта 2020

Вопрос неоднозначный. Я буду стараться изо всех сил;

Данные

enter image description here

Применить df.melt , чтобы отключить DF от широкой отформатировать в длинный формат и получить столбцы, необходимые для построения сюжета для скрипки

df2=pd.melt(df, id_vars=['Sensory','volume'], value_vars=['Exp1', 'Exp2', 'Exp3', 'Exp4', 'Exp5', 'Exp6', 'Exp7', 'Exp8', 'Exp9', 'Exp10'])

Результат

enter image description here

Plot Violin.

Скрипка принимает три переменные x=variable 1, y=variable 2 и hue=variable 3, где variable 3 может использоваться для классификации группы по split=True, если она имеет два различных элемента

Вы не были слишком определенными , Я построил это так, как показано ниже. Мы можем улучшить при необходимости.

Без группировки:

ax = sns.violinplot(x="variable", y="value", hue="Sensory", data=df2, palette="muted")

Если вам нужно, сгруппированные по Sensory, тогда:

ax = sns.violinplot(x="variable", y="value", hue="Sensory", split=True, data=df2, palette="muted")
...