目前,seaborn通过设置split=True
,根据hue
变量提供{a1}。我想做一个'半'小提琴情节,即一个情节,其中一半小提琴被省略。这样一个图描述的东西类似于每个连续变量的pdf,只在每个分类变量的每条垂直线的一侧绘制。在
我已经设法让seaborn
用一个超出绘制值范围的额外数据点和一个额外的虚拟色调来绘制这个图,但是我想知道这是否可以在不改变数据集的情况下完成,例如在sns.violinplot()
参数内。在
例如,此图:
由以下代码段创建:
# imports
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# load dataset from seaborn
datalist = sns.get_dataset_names()
dataset_name = 'iris'
if dataset_name in datalist:
df = sns.load_dataset(dataset_name)
else:
print("Dataset with name: " + dataset_name + " was not found in the available datasets online by seaborn.")
# prepare data
df2 = df.append([-999,-999,-999,-999,'setosa'])
df2['huecol'] = 0.0
df2['huecol'].iloc[-1]= -999
# plot
fig = plt.figure(figsize=(6,6))
sns.violinplot(x='species',y="sepal_width",
split=True, hue ='huecol', inner = 'quartile',
palette="pastel", data=df2, legend=False)
plt.title('iris')
# remove hue legend
leg = plt.gca().legend()
leg.remove()
plt.ylim([1,5.0])
plt.show()
答案很简单,不,如果不诱使seaborn认为存在一个
hue
礼物,那么seaborn是不可能的。在This answer演示了如何在matplotlib中实现这一点,原则上同样可以应用于seaborn小提琴情节,即切断小提琴路径的一半。在
相关问题 更多 >
编程相关推荐