我正在 Seaborn 中创建一个小提琴图,默认情况下,假设 x 轴是分类的,因此均匀地间隔数据,而不是按值缩放。我希望各个小提琴之间的间距由与每把小提琴相关的值来定义,而不是仅仅均匀地间隔它们。我读过很多内容,建议我可以使用 matplotlib 命令覆盖默认值,但无法让任何东西发挥作用。
sns.set(palette='muted', color_codes=True)
f, axes = plt.subplots(2, 2, figsize=(8,5))
sns.violinplot(x = lsdf['6MO_CUM_MBO/1000FT'], y = lsdf.RELATIVE_DEPTH,
data=lsdf, palette="Blues", ax=axes[0,0])
我认为这里的关键问题是我不太确定 Seaborn 的默认值控制着什么。我需要修改子图创建的轴对象吗?或者 ax=[0,0] 对象?
我发现类似问题的唯一答案有一个解决方案,就是“在 matplotlib 中执行”,但我需要 seaborn 中可用的绘图。感谢您的帮助。
好吧,我最终解决了这个问题,有点......我屈服并使用纯 matplotlib,放弃了 Seaborn。 matplotlib violinplot 采用类似数组的
positions
参数,当传递数值时,它会自动缩放 x 轴,其行为与 plt.plot
或标记位置和轴范围从输入数据派生的任何绘图完全相同。我仍然使用 seaborn.set()
来获得漂亮的 Seaborn 美学。有 matplotlib 小提琴图定制文档,其中有关于如何编辑小提琴细节的很好的示例,这使我能够定制小提琴并模仿 Seaborn 小提琴图的所有部分。
现在可以通过设置
native_scale = True
来完成