我正在使用Seaborn violinplot()
和swarmplot()
显示数据框中的数据。当我在使用violinplot
时遇到麻烦时,Swarmplot可以正常工作。
我会循环绘制所有图,其中大多数都按预期显示,但是有些数字没有相应的小提琴。对于相同的数据部分,如果没有循环,也会发生这种情况。
用于错误绘图的DataFrame。
非常感谢您的宝贵时间!
CDS source
0 3158 nature
1 2879 DTU
2 2881 DTU
3 3103 dairy
4 2992 nature
5 3127 dairy
6 3127 nature
7 2879 dairy
8 3116 nature
9 3091 nature
10 3014 dairy
11 3003 nature
12 2951 dairy
13 3161 nature
14 2960 nature
15 2971 nature
16 3138 nature
17 3153 nature
18 2878 DTU
19 2882 DTU
20 2880 DTU
21 2880 DTU
22 2942 nature
23 3027 dairy
24 3021 dairy
25 3395 nature
26 3160 nature
27 2997 nature
28 3094 nature
29 2798 nature
30 3082 dairy
31 3061 nature
32 2912 nature
33 2952 nature
34 3154 nature
35 3158 nature
36 2980 dairy
37 3069 dairy
38 3080 nature
39 2880 DTU
40 3301 nature
41 3042 nature
42 3154 nature
43 3034 nature
44 2983 dairy
45 2981 nature
46 3049 nature
47 3090 dairy
48 2987 nature
49 2828 nature
50 2924 nature
51 3108 dairy
52 3128 nature
53 3030 nature
54 3120 nature
55 3176 nature
56 3185 nature
57 3205 nature
58 2987 nature
59 2900 nature
60 3247 nature
61 3144 nature
62 3092 nature
63 2944 dairy
64 3284 nature
65 2947 nature
66 3185 dairy
67 2715 dairy
68 2924 nature
69 2929 nature
70 2961 nature
71 3172 nature
72 3161 nature
73 3200 nature
74 2913 nature
75 3157 nature
76 2965 nature
77 2940 nature
78 3104 dairy
79 3015 dairy
80 3022 dairy
81 3119 nature
82 3189 dairy
83 3179 nature
代码:
for species in listofspecies:
dfplot = df[df['species'].isin([species])]
ax = sns.violinplot(data = dfplot, x='source', y="CDS", order=["dairy","DTU","nature"], inner=None)
ax = sns.swarmplot(data = dfplot, x='source', y='CDS', order=["dairy","DTU","nature"], color=("white"), edgecolor="black", linewidth=0.7)
plt.show()
plt.clf()
错误的小提琴图
正确:
答案 0 :(得分:2)
source == 'DTU'
的数据点很少;此外,它们的'CDS'
值非常接近。小提琴的中央图最终以几乎为零的高度结束。
violinplot
具有参数scale
,其默认值为area
。为了使所有区域相等,另外两个小提琴必须非常狭窄。设置scale='width'
可使所有小提琴具有相等的宽度:
ax = sns.violinplot(data=dfplot, x='source', y="CDS", order=["dairy", "DTU", "nature"],
inner=None, scale='width')
ax = sns.swarmplot(data=dfplot, x='source', y='CDS', order=["dairy", "DTU", "nature"],
color=("white"), edgecolor="black", linewidth=0.7, ax=ax)
左图是生成的图,右图放大到了非常有限的y区域,集中在“ CTU”小提琴图上。