def plot(self, title=None): plotter = self.__plot(title) plotter.show(),如何修改程序,可以在经此函数生成的图片figure1上继续叠加其他曲线
时间: 2023-12-31 12:05:50 浏览: 163
plot_line.m:生成用于绘制直线的坐标。-matlab开发
你需要在调用`plot()`函数之前,使用`plt.figure()`创建一个新的图像窗口,然后在`plot()`函数中指定`ax`参数为该窗口的Axes对象。这样,你就可以在同一个图像窗口上绘制多个曲线了。下面是修改后的代码示例:
```
import matplotlib.pyplot as plt
class Plotter:
def __init__(self, x, y):
self.x = x
self.y = y
def __plot(self, title=None):
fig, ax = plt.subplots()
ax.plot(self.x, self.y)
ax.set_title(title)
return fig, ax
def plot(self, title=None, ax=None):
if ax is None:
fig, ax = self.__plot(title)
else:
ax.plot(self.x, self.y)
ax.set_title(title)
fig = ax.figure
return fig, ax
```
在第一次调用`plot()`函数时,不需要指定`ax`参数;在之后的每次调用中,将前一次调用返回的`ax`对象传递给`ax`参数即可。例如,下面的代码会在同一个图像窗口上绘制两条曲线:
```
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plotter = Plotter(x, y1)
fig, ax = plotter.plot(title='Sin(x)')
plotter.y = y2
fig, ax = plotter.plot(title='Cos(x)', ax=ax)
plt.show()
```
在这个例子中,我们先绘制了sin(x)曲线,然后将y数据改为cos(x)并再次调用了`plot()`函数,将其绘制在同一个图像窗口上。
阅读全文