matplotlib:如何缓冲标签文本?

时间:2014-08-21 12:39:23

标签: python matplotlib

我希望在matplotlib中有一个彩色缓冲区周围的注释文本。在QGIS中截取的屏幕截图显示了它的外观如何(红色)

buffered text in GIS

我尝试了什么

我天真的方法涉及策划'一些文字'两次,具有不同的字体大小和字体粗细。结果看起来并不令人信服。 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))

结果

matplotlib exercises to recreate buffered text

所以我的问题是

(如何)可以(通过合理的努力)在matplotlib中重新创建缓冲文本?

1 个答案:

答案 0 :(得分:7)

here上使用路径效果概述了各种图形对象的详细演示。这是一个关注文本元素的最小例子。

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

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

enter image description here