matplotlib:如何缓冲标签文本?

y1aodyip  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(96)

我想在matplotlib中的注解文本周围有一个彩色缓冲区。这张在QGIS中拍摄的截图显示了它的外观**(红色)**:

我所尝试的

我天真的方法是用不同的字体大小和字体粗细绘制两次“Some text”。结果看起来两次都不令人信服。bbox解决方案“有效”,但没有缓冲文本的美学效果。

%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt

# font size
plt.annotate(
    'Some text', xy=(.5, .75), color=(.7, .7, .7), 
    ha='center', va='center', fontsize='20')
plt.annotate(
    'Some text', xy=(.5, .75), color=(.2, .3, .8), 
    ha='center', va='center', fontsize='16')

# font weight
plt.annotate(
    'Some text', xy=(.5, .5), color=(.7, .7, .7), 
    ha='center', va='center', fontsize='16', weight='bold')
plt.annotate(
    'Some text', xy=(.5, .5), color=(.2, .3, .8), 
    ha='center', va='center', fontsize='16')

# bbox
plt.annotate(
    'Some text', xy=(.5, .25), color=(.2, .3, .8), 
    ha='center', va='center', fontsize='16', 
    bbox=dict(fc=(.7, .7, .7), lw=0, pad=5))

结果

所以我的问题是
(How)是否有可能(通过合理的努力)在matplotlib中重新创建缓冲文本?

oewdyzsn

oewdyzsn1#

here上有一个详细的演示,使用路径效果来勾勒各种图形对象。

import matplotlib.pyplot as plt
import matplotlib.patheffects as pe

fig, ax = plt.subplots()
txt = ax.text(0.5, 0.5, "test",
              size=20,
              color='white',
              path_effects=[pe.withStroke(linewidth=4, foreground="red")])

相关问题