gpt4 book ai didi

python-3.x - Python 中 Matplotlib 中的响应式文本

转载 作者:行者123 更新时间:2023-12-02 04:06:12 25 4
gpt4 key购买 nike

我正在 Python 中使用 networkX 和 Matplotlib 开发一个简单的图形可视化工具。我还有一些用文本绘制的按钮。总体而言,设计是响应式的,这意味着当我调整窗口大小时,图形和按钮会缩放。然而,文本大小保持不变,这使得整个可视化工具在大小调整不够时看起来非常糟糕。你知道如何使文本也具有响应性吗?

提前谢谢您!!!

最佳答案

您更新了 matplotlib.text.Text 的字体大小使用text.set_fontsize()。您可以使用 "resize_event"调用设置新字体大小的函数。为了对图中的每个文本执行此操作,定义一个存储初始图形高度和字体大小的类可能会有所帮助,并在调整图形大小后更新字体大小,并按新的图形高度除以初始高度进行缩放。

然后,您还可以定义最小可读字体大小,低于该字体大小的文本不应调整。

完整示例:

import matplotlib.pyplot as plt
import numpy as np

class TextResizer():
def __init__(self, texts, fig=None, minimal=4):
if not fig: fig = plt.gcf()
self.fig=fig
self.texts = texts
self.fontsizes = [t.get_fontsize() for t in self.texts]
_, self.windowheight = fig.get_size_inches()*fig.dpi
self.minimal= minimal

def __call__(self, event=None):
scale = event.height / self.windowheight
for i in range(len(self.texts)):
newsize = np.max([int(self.fontsizes[i]*scale), self.minimal])
self.texts[i].set_fontsize(newsize)

fontsize=11
text = plt.text(0.7, 0.6, "Some text", fontsize=fontsize,
bbox={'facecolor':'skyblue', 'alpha':0.5, 'pad':10})

cid = plt.gcf().canvas.mpl_connect("resize_event", TextResizer([text]))

plt.show()

关于python-3.x - Python 中 Matplotlib 中的响应式文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39454275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com