Python 如何为具有不同比例数据的不同类别显示单个小提琴图?
我正在使用Python的Seaborn库来可视化我的数据集。当我在一个绘图中绘制所有类的数据时,绘图显示不正确,这可能是因为所有类可能没有相同比例的数据(如下所示) 但是,当我绘制单个类的数据时,它会正确显示(如图所示) 我应该在相同的尺度上标准化所有类的数据,然后再次绘图,还是有其他方法来实现所有类的单一小提琴绘图 谢谢你的帮助 编辑: 按照@warlax56的要求,我在代码中做了如下操作:Python 如何为具有不同比例数据的不同类别显示单个小提琴图?,python,seaborn,data-visualization,violin-plot,Python,Seaborn,Data Visualization,Violin Plot,我正在使用Python的Seaborn库来可视化我的数据集。当我在一个绘图中绘制所有类的数据时,绘图显示不正确,这可能是因为所有类可能没有相同比例的数据(如下所示) 但是,当我绘制单个类的数据时,它会正确显示(如图所示) 我应该在相同的尺度上标准化所有类的数据,然后再次绘图,还是有其他方法来实现所有类的单一小提琴绘图 谢谢你的帮助 编辑: 按照@warlax56的要求,我在代码中做了如下操作: import seaborn as sb import pandas as pd import m
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
# Global settings for Seaborn library
sb.set_style("whitegrid", {
"grid.linestyle": '--'
})
def main():
# The location of Gaussian Pre-processing data for both age and BMI
# that gives the highest accuracy for 0.56s and 0.36s SD respectively
age_feats_file = '../Data/SVM-RFE-N36-gaussian-age-sigma100.csv'
# Load the Age csv file
age_data = pd.read_csv(age_feats_file)
# plotting only f50 for checking
vplot = sb.violinplot(x='age_class', y='f50', data=age_data, inner="box")
vplot.set_xticklabels(vplot.get_xticklabels(), rotation=20)
plt.show()
SVM-RFE-N36-gaussian-age-sigma100.csv是包含下图所示数据的数据集csv文件:
该类别的
青年人
值似乎比其他类别大3个数量级。这是预期的吗?你确定你的数据没有问题吗?你能提供可重复性最低的代码吗?i、 e.制作一个手动定义的小数据集,执行相同的操作,并向我们显示结果?“如果我们看不到引擎盖下发生的事情,就很难提供帮助。”DizietAsahi显然,我的数据就是这样的。我是否应该在绘制小提琴图之前对相同比例的数据进行标准化处理?@warax56,我已经编辑了这个问题。让我知道这是否对你有帮助。嗯,看来你在年轻人中可能有一个异常值。尝试一个预处理步骤,删除不在平均值2个标准偏差范围内的数据。或者简单地限制最小值和最大值。如果这两项都不起作用,那么标准化可能是一个好的举措。