繁体   English   中英

Matplotlib x-labels 垂直切割

[英]Matplotlib x-labels vertical cut

我想使用这种方法生成一个包含垂直排列的各种标签的 plot :

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)时不会考虑标签:

在此处输入图像描述

这就是我所说的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()。 似乎没有任何效果。 有任何想法吗?

我已经像这样编辑了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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM