Python:如何使 'anchor' 文本始终可见和 set_text 方法 Matplotlib

标签 python methods plot matplotlib visible

我有这个代码:

from pylab import *
from mpl_toolkits.axes_grid.anchored_artists import AnchoredText
import numpy as np
import matplotlib.pylab as plt


fig = plt.figure()
ax = fig.add_subplot(111)

ann = AnchoredText('If you zoom in or out, i stay here\nbut can you update this text?',
                  prop=dict(size=8), frameon=True,
                  loc=2,
                  )
ann.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
ax.add_artist(ann) 

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = (Z1 - Z2) * 10

plt.contourf(X, Y, Z)

plt.show()

有没有一种方法可以使 anchor 文本始终可见,但也可以像在文本对象中一样使用 set_text 方法来更新包含的文本? 在这里,我使用了完美锚定的 AnchoredText,但我找不到更改它包含的文本的方法。 在 AnchoredText Matplotlib 文档我找不到这样的可用方法。 如果不能用 AnchoredText 完成,可以用一个简单的文本对象来完成吗?

编辑

我接受了 David Zwicker 的解决方案,这里有一个适用于任何需要它的人的工作示例:

from pylab import *
from mpl_toolkits.axes_grid.anchored_artists import AnchoredText
import numpy as np
import matplotlib.pylab as plt
import random


fig = plt.figure()
ax = fig.add_subplot(111)

ann = AnchoredText('If you zoom in or out, i stay here\nbut can you update this text?$4.1f$ km s$^{-1}$',
                  prop=dict(size=15), frameon=True,
                  loc=2,
                  )
ann.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
ax.add_artist(ann) 

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = (Z1 - Z2) * 10

plt.contourf(X, Y, Z)

a = ["hhhhh", "qqqqq", "aaaaaaa","ttttt","yyyyy","oooooooo"]

def setanntext(self):
         ann.txt.set_text(random.choice(a))
         plt.draw()

buttonax = plt.axes([0.7, 0.05, 0.1, 0.1])
button = Button(buttonax, 'set text',color='0.85', hovercolor='0.95')
button.on_clicked(setanntext)

plt.show()

最佳答案

您可以访问属性txt。您可以使用

更新锚定文本
ann.txt.set_text('new text')
plt.draw()

plt.draw() 是更新绘图和显示新文本所必需的。

关于Python:如何使 'anchor' 文本始终可见和 set_text 方法 Matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196757/

相关文章:

python - 使用 Bokeh 绘制条形图

java - 如何使用名称访问 Java 中的变量?

javascript - append 元素上的绑定(bind)方法

matlab - 如何控制子图周围的边距大小?

R:circlize circos plot - 如何以最小的重叠绘制扇区之间的未连接区域

python - 按计数迭代计数器中的项目

python - 正则表达式价格匹配

python - 如何不对 pandas 中的索引进行排序

java - 对递归方法和循环感到困惑

Linux (Ubuntu 11.10) 中的 Matlab 在绘图中不显示 Unicode(希伯来语)