[英]Size my matplotlib charts so that size of chart is always consistent even with widely varying ylabel lengths
我的 matplotlib 图表输出遇到了问题,我将其导出为 SVG 文本(使用fig.savefig()
并在 Web 应用程序中呈现为服务器端呈现的分析)。
这些图表之一是水平条形图 - 如下图所示,细节惊人 -
_______________________
item1_name |---- |
item2_name |-------- |
something |---------- |
thing thing thing |------------- |
other thing |---------------------|
---1---2---3---4---5---
some metric
我的问题是当这些标签非常大时,它们会引起麻烦。
使用fig.tight_layout()
:
_______________________
ry Very Long Name |---- |
eft Side Gets Cut |-------- |
Keep Getting Cut |---------- |
names are getting |------------- |
cutoff on left |---------------------|
---1---2---3---4---5---
some metric
绘图渲染正常,但左侧的 X 轴标签被切断(奇怪的是,在某些情况下,绘图实际上似乎渲染得比正常大)
使用rcParams.update({'figure.autolayout': True})
:
________
My Very Very Very Very Long Name |- |
Now I Am Smushed |-- |
Chart is very small |--- |
but names are being |----- |
rendered in full |------|
-1----5-
some metr
名称完整呈现,但情节被压缩以腾出空间。
我希望使它始终保持完全相同的大小,无论 x 轴的比例,y 标签的长度如何 - 同时也不要在左侧切割 ylabels 。
是否有 mpl 方便的方法来呈现整个图表和标签而不会失真/截止? 我相信tight_layout()
应该这样做,但只适用于 xlabels。
如果没有,是否有一种方法可以获取 ylabel 所需的大小,然后我可以将其与fig.set_size_inches()
,如下所示:
label_inches_needed = get_label_size(axes)
plot_consistent_height = 4
plot_consistent_width = 10
fig.set_size_inches(plot_consistent_width + label_inches_needed, plot_consistent_height)
感谢您的任何建议,并感谢您查看我的图表。
为确保标签不会被剪掉,请在保存时尝试使用选项 bbox。 我无法验证您的情况,因为您没有为您的数字提供代码,但这通常可以解决问题。
plt.savefig(figname, bbox_inches = "tight")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.