首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Matplotlib中,ax.texts容器是空的,为什么?

在Matplotlib中,ax.texts容器是空的,为什么?
EN

Stack Overflow用户
提问于 2018-01-22 17:51:35
回答 1查看 756关注 0票数 0

我有点迷路了,需要帮助。

我试图通过文本添加一个文本到轴。我知道你可以用ax.text,ax.annotate,但我需要使用文本。不要问我为什么:)下面是我的简单代码。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
from matplotlib.text import Text

txt1 = Text(text='Dude', x=0.5, y=0.5)
fig, ax = plt.subplots()
ax.add_artist(txt1)

在Matplotlib文档中,它指出对于没有add_方法的艺术家,可以使用add_artist。所以我就这么做了。但是,当您添加文本时,它是否应该在ax.texts容器中可用?

我跑的时候,

代码语言:javascript
运行
复制
ax.texts

它返回一个空列表。但是,当您使用ax.annotate或ax.text时,ax.texts容器没有问题。

有人能解释一下为什么吗?我怎么才能用Text艺术家来纠正它呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 18:12:22

matplotlib内部向轴添加Text的方式(如果调用ax.text )是通过调用

代码语言:javascript
运行
复制
ax._add_text(..)

因此,您可以将代码中的行ax.add_artist(txt1)替换为

代码语言:javascript
运行
复制
ax._add_text(txt1)

这样做,Text实例将在ax.texts列表中可用。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
from matplotlib.text import Text

txt1 = Text(text='Dude', x=0.5, y=0.5)
fig, ax = plt.subplots()

ax._add_text(txt1)
print(ax.texts)
plt.show()

这个列表中的原因是_add_text方法直接调用了self.texts.append(txt)。所以你甚至可以复制_add_text

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
from matplotlib.text import Text

txt1 = Text(text='Dude', x=0.5, y=0.5)
fig, ax = plt.subplots()

ax._set_artist_props(txt1)
ax.texts.append(txt1)
txt1._remove_method = lambda h: ax.texts.remove(h)
ax.stale = True

print(ax.texts)
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48387480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档