当前位置: 首页 > 知识库问答 >
问题:

打印文件未使用正确的轴,注释问题

吴谦
2023-03-14

当使用matplotlibsplotfile函数时,我遇到了一个奇怪的行为。

我想给一个文件的绘图添加注释,text。txt,其中包含:

x
0
1
1
2
3

使用以下代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
annot = ax.annotate("Test", xy=(1,1))
plt.plotfile('test.txt', newfig = False)
plt.show()

这让我得到了下面这个看起来很奇怪的图,到处都是轴标签,注释在错误的地方(相对于我的数据):

然而,当我使用

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

而不是

fig, ax = plt.subplots()

MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.

所以我想在一个例子中,plt。plotfile使用以前的轴(也用于制作注释),但这会给我一个警告,而在另一种情况下,它会生成一个新的轴实例(因此没有警告),但也会生成一个带有两个重叠轴的奇怪打印。

现在我想知道两件事:

  1. 为什么我如何声明我的图形和轴会有不同,根据这个答案,它们应该是可互换的
  2. 如何告诉plotfile要打印到哪个轴,如何避免折旧警告以及如何将其打印到正确的轴?我假设这不仅仅是plotfile的问题,而是轴上未直接调用的所有打印类型的问题(不同于例如,ax.scatter,ax.plot,…我无法调用ax.plotfile

共有1个答案

丁高峯
2023-03-14

plotfile是直接打印文件的便利功能。这意味着它假定不存在先前的轴,并创建一个新轴。如果确实已经有人在场,这可能会导致有趣的行为。尽管如此,您仍然可以按预期的方式使用它,

import matplotlib.pyplot as plt

plt.plotfile('test.txt')
annot = plt.annotate("Test", xy=(1,1))
plt.show()

然而,正如留档所说,

注:plotfile旨在方便快速打印平面文件中的数据;它不是pyplot或matplotlib常规打印的替代接口。

因此,一旦您想要对图形或轴进行重大更改,最好不要依赖于plotfile。类似的功能可以通过以下方式实现:

import numpy as np
import matplotlib.pyplot as plt

plt.plot(np.loadtxt('test.txt', skiprows=1))
annot = plt.annotate("Test", xy=(1,1))
plt.show()

这与面向对象的方法完全兼容,

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
annot = ax.annotate("Test", xy=(1,1))
ax.plot(np.loadtxt('test.txt', skiprows=1))

plt.show()
 类似资料:
  • 问题内容: 我试图用Python写出xml文件。问题在于它们总是在一行中生成。我希望能够轻松地引用它们,因此,如果我真的很希望能够将文件干净地写出。 这就是我得到的: 这是我想看到的: 问题答案: 您可以使用from的功能来做到这一点: 想法是将您的字符串打印出来,使用minidom进行解析,然后使用函数再次将其转换为XML 。 资料来源:http : //pymotw.com/2/xml/etr

  • 这是我目前正在处理的问题。 因此,我需要帮助更正今天日期的月份,100天后的日期,我生日的日期,和我生日后的10,000天。任何帮助或洞察力都非常感谢。

  • 我正在做一个项目,我有一个文件,程序可以访问该文件以获取不同年份的不同犯罪信息。然后它需要根据类型添加犯罪并将其放入文件中。我有第一部分,它确实访问了文件并按类型添加了犯罪金额,但当我打开创建的文件时,它没有正确打印出来,我似乎找不到问题所在。 这是打印在文件上的内容: ísr爪哇。util。HashMapÚÁÃ`F loadFactorI thresholdxp?@全爪哇暴力犯罪。lang.In

  • 我正在开发一个应用程序,使用: Java 1.7 我想对一些字符串属性使用PostgreSQL文本数据类型。据我所知,在JPA中,要使用PostgreSQL中的文本,这应该是正确的注释: 当我像这样注释我的实体时,我遇到的错误如下所示:http://www.shredzone.de/cilla/page/299/string-lobs-on-postgresql-with-hibernate-36

  • 已创建输出文件,但未写入数字。 程序应读取一个文件,然后创建一个输出文件,该文件反向打印输入文件中的数字。 实际结果只显示文件,但文件中没有写入任何内容。