当前位置: 首页 > 知识库问答 >
问题:

matplotlib savefig-文本截断[重复]

公孙胡媚
2023-03-14

假设我创造了一个情节:

import matplotlib.pyplot as plt
plt.clf()
import numpy as np
props = np.random.randint(0,100,(200,))
x=np.arange(1,201,1)
plt.plot(x,props,c='k')
plt.xlabel('blah blah blah blah blah blah\n blah blah blah blah blah')
plt.ylabel('blah blah blah blah blah blah blah blah blah')
fig=plt.gcf()
fig.set_size_inches(3.75,3.75)#14, 23)
plt.savefig('testfig.png',dpi=300)

使用Ipython(通过Spyder)时,绘图显示ok。但是,当我查看保存的图像时,它显示如下:

如您所见,文本被截断。处理此问题的建议做法是什么?

我通过增加体形尺寸,然后重新调整尺寸来解决这个问题。然而,我的目标是生成一组文本大小一致的图像(图形大小不同);因此,这种方法并不理想。

笔记虽然存在类似的问题,但该问题的不同之处在于:

  • 处理xlabelylabel

共有3个答案

宗政海
2023-03-14

我想答案在stackoverflow的其他地方给出了。简单地说,您应该更改标签文本的字体大小:

plt.ylabel('Example', fontsize=40)
plt.xlabel('Example', fontsize=40)

当然,将数字40(反复试验)更改为更合适的值。

我不知道这是一个修复还是一个解决办法。我也不知道这是否有用。

刘英彦
2023-03-14

matplotlib有一个叫做tight_layout的函数,它自动调整子图参数,以便子图适合图形区域。

如文档中所述,它被标记为实验性的,但通常被使用。

根据我的经验,应该尽可能晚地调用它(例如,在使用savefig之前),并且可能在更改几何图形的调用之后调用(例如fig.set\u size\u inches)。

plt中。show()gui窗口中,其中一个按钮也在执行此调用。

(转换为先前评论的答案)

白光耀
2023-03-14

Spyder中的Ipython控制台使用inline后端,它将图形保存为png并显示输出图像。保存时,它使用选项bbox\u inches=“tight”

因此,为了获得控制台中显示的相同图形,您也可以决定使用此选项-它基本上扩展或缩小边界框,以便显示画布中的所有对象。

plt.savefig('testfig.png',dpi=300, bbox_inches = "tight")

或者,在保存或显示地物之前,您可以确保所有对象都已位于地物边界内

plt.tight_layout()

它会自动完成,或者你可以使用

plt.subplots_adjust(left=0.3, right=0.9, bottom=0.3, top=0.9)

其中,参数以图形大小的分数为单位表示每侧的边距(左侧为30%,右侧为10%,等等)。

 类似资料:
  • 此代码完全符合我的需求:将版权信息添加到复制的Web文本的底部。但是,它复制了整篇文章。我想限制它说50个字或200个字符。我应该如何继续? JSFIDDLE演示 不知道用< code>substring还是上面的代码没有用< code>write函数。

  • 我目前使用引导表(http://bootstrap-table.wenzhixin.net.cn/)与引导可编辑扩展(https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/editable)创建一个表与可编辑的字段。我注意到,当一个字符串包含qoutes时,例如:这是一个“测试”,字符串在第一个“测试”中被截

  • 我有一个文本需要在定义的长度内被截断(比如14),我想在被截断文本的末尾添加一个省略号。 示例输出: 此处有一些文本。。。 这可以在CSS中完成吗?

  • 我想用句子截断文本。 示例文本:'Lorem ipsum dolor坐在amet,奉献adipiscing elit!UT车辆laoreet urna, commodo,在马萨诸塞州。赛德volutpat nunc简历urna拍卖,在tempus enim rhoncus。马蒂斯康莫多的莫尔比交流电击器?Morbi在ornare Arcu,sagittis scelerisque risus。Ae

  • 问题内容: 我想截断一些文本(从数据库或文本文件加载),但其中包含HTML,因此包含了标签,并且将返回较少的文本。然后,这可能导致标签未关闭或部分关闭(因此Tidy可能无法正常工作,并且内容仍然较少)。我如何基于文本截断(并且可能在到达表时停止,因为这可能会导致更复杂的问题)。 将导致: 我想要的是: 我怎样才能做到这一点? 虽然我的问题是有关如何在PHP中进行操作,但最好知道如何在C#中进行操作

  • 我尝试在Jasper报告中格式化日期,它适用于Windows但不适用于Linux。对于Linux,结果文本被截断。 JRXML: Maven依赖关系: 我读到: 用jasperreport生成的PDF在Linux上显示不佳,但在Mac上显示良好,可能与os有关吗? http://community.jaspersoft.com/questions/527138/pdf-text-truncated