当前位置: 首页 > 面试题库 >

我如何告诉Matplotlib创建第二个(新的)图,然后在旧的图上进行更新?

孟增
2023-03-14
问题内容

我想绘制数据,然后创建一个新图形并绘制data2,最后回到原始绘制并绘制data3,有点像这样:

import numpy as np
import matplotlib as plt

x = arange(5)
y = np.exp(5)
plt.figure()
plt.plot(x, y)

z = np.sin(x)
plt.figure()
plt.plot(x, z)

w = np.cos(x)
plt.figure("""first figure""") # Here's the part I need
plt.plot(x, w)

仅供参考,我如何告诉matplotlib我已经完成了一个情节?做类似的事情,但不完全相同!它不允许我访问原始图。


问题答案:

如果您发现自己定期执行此类操作,则可能值得研究matplotlib的面向对象的接口。在您的情况下:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.exp(x)
fig1, ax1 = plt.subplots()
ax1.plot(x, y)
ax1.set_title("Axis 1 title")
ax1.set_xlabel("X-label for axis 1")

z = np.sin(x)
fig2, (ax2, ax3) = plt.subplots(nrows=2, ncols=1) # two axes on figure
ax2.plot(x, z)
ax3.plot(x, -z)

w = np.cos(x)
ax1.plot(x, w) # can continue plotting on the first axis

它稍微冗长一些,但是更容易跟踪,尤其是在几个具有多个子图的图形上。



 类似资料:
  • 问题内容: 我在这里重新绘制图形时遇到问题。我允许用户在时间刻度(x轴)中指定单位,然后重新计算并调用此函数plots()。我希望该图仅进行更新,而不是将另一个图附加到该图上。 问题答案: 你基本上有两个选择: 精确执行当前操作,但在重新配置数据之前先致电和。这是最慢但最简单,最可靠的选择。 除了重新绘制外,你还可以更新绘图对象的数据。你需要在代码中进行一些更改,但这比每次重新绘制都快得多。但是,

  • 我可以访问figure实例。我知道在这个图中有一个图例,我可以通过。现在我想更改图例的属性。其中一些我可以通过设置器访问,比如。 创建图例时,它接受多个关键字参数: 类matplotlib。传奇传奇(父项、句柄、标签、loc=None、numpoints=None、markerscale=None、scatterpoints=None、scatteryoffsets=None、prop=None、

  • 问题内容: 我将一些matlpotlib函数集成到了一些django-celery任务中。 每次调用任务时,都会将更多RAM专用于python。不久之后,python占用了所有RAM。 问题: 如何释放此内存? 更新2-第二种解决方案: 我问过类似的问题,特别是有关内存锁定matplotlib错误的时候,但是我有一个很好的回答这个问题,以及如果使用多进程运行在单独的进程中绘图功能,其内存会自动释放

  • 问题内容: 我正在matplotlib中的轴对象上绘制图例,但是声称将其放置在智能位置的默认定位似乎不起作用。理想情况下,我希望图例可由用户拖动。如何才能做到这一点? 问题答案: 注意:现在已内置到matplotlib中 将按预期工作 好吧,我发现解决方案的点点滴滴分散在邮件列表中。我提出了一个很好的模块化代码块,您可以插入并使用…在这里: …以及您的代码中… 我给Matplotlib-users

  • 问题内容: 我有一个(实际上,我使用的是更复杂的POJO,但是为了我的问题而简化了它) 好像 : 我如何遍历此地图,打印出密钥,然后打印人名,然后打印人年龄,例如: A是Map < String ,Person> 的键 B是Person.getName()的名称 C是Person.getAge()的年龄 我可以使用.values()从地图中提取所有值,如HashMap文档中所述,但是我不确定如何获

  • 我的makeWhiteTransparent方法如下所示: 我尝试将graphics.drawImage(newImage,null,0,0)更改为graphics.drawImage(newImage,0,0,null),并按照建议将TYPE_4BYTE_ABGR更改为TYPE_INT_ARGB,但没有任何效果。错误仍然存在。