Это потому, что вы указываете две вещи для оси x в этой строке x="smoker"
. А именно, что он отображает курильщика - да и курильщика - нет.
Что вы действительно хотите сделать, так это построить все данные. Для этого вы можете просто указать одно значение для оси x.
sns.set(style="whitegrid", palette="pastel", color_codes=True)
# Load the example tips dataset
tips = sns.load_dataset("tips")
# Draw a nested violinplot and split the violins for easier comparison
sns.violinplot(x=['Data']*len(tips),y="total_bill", hue="smoker",
split=True, inner="quart",
palette={"Yes": "y", "No": "b"},
data=tips)
sns.despine(left=True)
Это выводит следующее: