python - 使用连续行作为 Y 轴的小提琴图
问题描述
我正在尝试构建以下数据(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
在图像中可能更容易看到
X 轴表示“传感器精度”和“数据点量”列。
对于每个 X 参数,我想找到一种方法让 Y 轴由 Exp 1-10 中的数据表示。
有没有一种简单的方法可以在不将表格重新格式化为单独的实验行的情况下做到这一点?
解决方案
这个问题是模棱两可的。我会尽力;
数据
应用df.melt将 df 从宽格式转为长格式并获取绘制小提琴图所需的列
df2=pd.melt(df, id_vars=['Sensory','volume'], value_vars=['Exp1', 'Exp2', 'Exp3', 'Exp4', 'Exp5', 'Exp6', 'Exp7', 'Exp8', 'Exp9', 'Exp10'])
结果
情节小提琴。
Violin 取三个变量x=variable 1, y=variable 2
,如果它有两个不同的元素,可以用hue=variable 3
where by来分类'group byvariable 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")
推荐阅读
- python - 如何在不达到最大递归深度的情况下递归获取 Web 链接
- javascript - 有没有办法可以克隆我的输入字段并在每次复制期间保存数据?
- c++ - 如何为三元运算符强制斩线?
- android - 在 Android Studio 中为测试源使用 Kotlin 编译器选项
- ios - 为什么在设备旋转期间 layoutSubviews 会被调用两次?
- python - 使用 PyQt5 保存熊猫数据框
- c++ - 如何用非常量值初始化模板类
- kivy - 访问可移动 SD 卡
- c# - 在凭据提供程序中加载 C# (COM):使用 winlogon,但资源管理器加载它时出现问题
- javascript - 在表格底部动态锁定 tr