![]() |
1
114
此答案的内容已合并到 https://github.com/matplotlib/matplotlib/pull/4342 并将在下一个功能版本中发布。
这应该是matplotlib内置的东西,但事实并非如此 threads about it 在邮件列表中,但我找不到自动文本包装的解决方案。
下一个问题是字符没有固定的像素宽度,因此在呈现时,将文本字符串包装为给定数量的字符不一定反映给定的宽度。不过,这不是什么大问题。 除此之外,我们不能只做一次。。。否则,在第一次绘制时(例如,在屏幕上),它将被正确地包装,但在再次绘制时(当图形被调整大小或保存为具有与屏幕不同的DPI的图像时)则不会。这不是个大问题,因为我们可以将回调函数连接到matplotlib draw事件。
但是,它应该尝试自动将任何文本对象包装在多个子块中,无论您将
|
![]() |
2
6
|
![]() |
3
5
大约已经五年了,但似乎仍然没有一个好的方法来做到这一点。这是我接受的解决方案的版本。我的目标是允许像素完美包装被有选择地应用于单个文本实例。我还创建了一个简单的text box()函数,它可以将任何轴转换为具有自定义边距和对齐方式的文本框。 我并没有假设一个特定的字体宽高比或平均宽度,而是一次画一个单词,并在达到阈值后插入换行符。与近似值相比,这个速度慢得惊人,但对于200个单词的字符串来说,仍然感觉很快。
我删除了一些对我来说不重要的功能。调整大小将失败,因为对_wrap()的每次调用都会在字符串中插入其他换行符,但无法删除这些换行符。这可以通过剥离wrap函数中的所有字符来解决,也可以将原始字符串存储在某个位置并在两次换行之间“重置”文本实例来解决。 |
![]() |
Dedekid · FuncAnimation如何在每次迭代后更新文本 3 年前 |
![]() |
DHJ · 如何删除matplotlib 3d plot中的轴值 3 年前 |
![]() |
Piyush Narula · 如何设置次要定位器 3 年前 |