簡體   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