Matplotlib xlabels垂直切割

2024-04-23 23:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用此方法生成包含垂直排列的各种标签的绘图:

def feat_imp(df, model, title, n_features, file_exp, format_exp):

d = dict(zip(df.columns, model.feature_importances_))
ss = sorted(d, key=d.get, reverse=True)
top_names = ss[0:n_features]

plt.figure()
plt.tight_layout()
plt.title(title)
plt.bar(range(n_features), [d[i] for i in top_names], color="g", align="center")
plt.xlim(-1, n_features)
plt.xticks(range(n_features), top_names, rotation='vertical')
plt.savefig(file_exp, format=format_exp, dpi=1200)

但是,执行此操作时,matplotlib创建EPS文件时不考虑标签(我需要EPS):

enter image description here

我这样称呼def:

feat_imp(df_K562, model, "Feature importances (" + cell_name + " - " + model_name + " - TOP 30)", 30, root_path + dest_path + "TOP30.eps", "eps")

我尝试在matplotlib配置文件中激活“autoSize”,尝试放置特定的dpi,并设置plt.tight_layout()。似乎什么都不管用。有什么想法吗


Tags: formatdfmodelnamestitletopdefplt
1条回答
网友
1楼 · 发布于 2024-04-23 23:39:41

我已经像这样编辑了def,它可以工作:

def feat_imp(df, model, title, n_features, file_exp, format_exp):
d = dict(zip(df.columns, model.feature_importances_))
ss = sorted(d, key=d.get, reverse=True)
top_names = ss[0:n_features]
plt.figure()
plt.title(title)
plt.bar(range(n_features), [d[i] for i in top_names], color="g", align="center")
plt.xlim(-1, n_features)
plt.tick_params(axis='both', which='minor', labelsize=6)
plt.xticks(range(n_features), top_names, rotation='vertical')
plt.autoscale()
plt.savefig(file_exp, format=format_exp, bbox_inches = "tight")

相关问题 更多 >