matplotlib.text.Text
のフォントサイズは、text.set_fontsize()
を使用して更新します。 "resize_event"
を使用して、新しいフォントサイズを設定する関数を呼び出すことができます。プロット内のすべてのテキストでこれを行うには、最初のFigureの高さを格納し、フォントサイズを変更し、新しいFigureの高さを最初のもので割った値をサイズ変更した後にfontsizeを更新するクラスを定義すると便利です。
また、テキストのサイズを変更しないで最低限の読み込み可能なフォントサイズを定義することもできます。
フル例:
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()
ありがとう!これは素晴らしい。質問に対する奨励金の動機を教えてくれるように、私はプロットエリアのパーセンテージに似た良いテキストサイズのデフォルト値をハードコードされたものよりも引き出すことを試みていました。私はこれのようなものがデフォルトとして存在するのだろうかと思います! –
デフォルトのフォントサイズは10で、デフォルトのFigureサイズは4.8インチです。 Figureのサイズを2倍にした場合は、20のフォントサイズをとってください。実際にはFigureのサイズを変更するのではなく、dpiを変更したいのですか? – ImportanceOfBeingErnest