seaborn log scale violin plot 下晶须问题

seaborn log scale violin plot lower whisker issue

我正在使用 seaborn 创建我的数据集的小提琴图,它有五个间隔,每个间隔包含 100 个值。这些值在 1 到 2622873 之间变化很大。为了使图形可读,我决定使用对数 y 尺度,但这会导致小提琴图出现问题。即小提琴底部的胡须永远不会四舍五入并一直持续到负无穷大。使用箱形图时这不是问题(请参阅注释行)。请注意,我的数据集中的最小值是 1。有什么方法可以像在箱线图中那样对底部的小提琴图进行四舍五入吗?

这里是violin plot, and here is the box plot boxplot

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd


data = {'interval1':col1,'interval2':col2,'interval3':col3,'interval4':col4,'interval5':col5}
df = pd.DataFrame(data)
sns.set_style("whitegrid")
plt.yscale("log")
plt.ylim(10**(0), 10**7)

plt.xlabel("x")
plt.ylabel("y")
sns.violinplot(data=df, palette="muted", scale="count", inner="quartile")

#sns.boxplot(data=df, palette="muted")

plt.show()

目前,如果轴是对数刻度,violinplot 不会计算 log space 中的密度估计值;它计算线性网格上的密度,然后缩放这些值。箱线图也是如此,但箱线图是基于分位数的,并且在对数转换时不会改变(但请注意对数图版本中异常值的不平衡)。

在将数据提供给任一函数之前,您需要对数据进行日志转换。