Using the following code to generate a violin plot:
mean_abs_sv = [] #np.array(object)
for key in mzdict_.keys():
mean_abs_sv.append(len(mzdict_[key]))
# print(mean_abs_sv)
show_feat = 10
top_feat_idx = np.argsort(mean_abs_sv)[::-1][0:show_feat]
top_features = [list(mzdict_.keys())[index] for index in top_feat_idx]
print(top_features)
data = [np.array(list(mzdict_.values())[index]) for index in top_feat_idx]
alp = 1
fig, axes = plt.subplots(nrows=10, ncols=1, figsize=(8, 6), dpi=100)#, sharex=True)
for i,t in enumerate(top_features):
# print(i)
alp = alp - 0.08
parts = axes[i].violinplot(data[i], vert=False, widths=0.9,
showmeans=True, showextrema=True, showmedians=False,
bw_method='scott')#, points=200)
for pc in parts['bodies']:
pc.set_facecolor('#D43F3A')
pc.set_edgecolor('black')
pc.set_alpha(alp)
axes[i].set_ylabel('{:.3f}'.format(top_features[i]), rotation=0)
axes[i].set_xlim(-0.0010, 0.0030)
axes[i].spines['top'].set_visible(False)
axes[i].spines['right'].set_visible(False)
axes[i].spines['bottom'].set_visible(False)
axes[i].spines['left'].set_visible(False)
for i, ax in enumerate(axes):
if i !=9:
ax.set_xticks([])
ax.set_yticks([])
fig.tight_layout()
fig.subplots_adjust(left=0.01,right= 1.1, hspace=0.14, wspace=0.3)
ax.set_yticklabels(top_features)
How to move the figure more to the right so that ytick
doesn’t overlap with the figure.