根据另一个图形创建一个图形
Create a figure based on another one
我想在一个函数中生成一个图形,然后能够在另一个函数中向该图添加其他内容。我希望这两个图(原始图和编辑后的图)都可供将来使用。类似于:
import numpy as np
import matplotlib.pyplot as plt
def plot_1():
X, Y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 50))
z = np.random.rand(50, 100)
fig, ax = plt.subplots()
ax.contourf(X, Y, z, cmap="viridis")
return fig
def plot_2(fig):
ax = fig.axes[0]
ax.scatter([2, 5], [1, 4], zorder=2.5, color="r")
return ax
f = plot_1()
f2 = plot_2(f)
然而,这改变了原始图像(我想保持原样)并且 return 不是 f2
中的可打印图形。起初我认为问题是散点图没有完成,但正如卢卡斯在评论中所建议的那样,这不是实际问题,因为它可以用 zorder
.[=13= 的正确值来解决]
我怎样才能做到这一点?
如果我理解正确的话:你想要两个数字,在两个数字中绘制相同的图形,然后只在一个图形中绘制一些额外的图形。
这样做的方法是在函数外部创建图形并将轴传递给函数:
import numpy as np
import matplotlib.pyplot as plt
def plot_1(ax):
X, Y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 50))
z = np.random.rand(50, 100)
ax.contourf(X, Y, z, cmap="viridis")
def plot_2(ax):
ax.scatter([2, 5], [1, 4], zorder=2.5, color="r")
fig_1, ax_1 = plt.subplots()
fig_2, ax_2 = plt.subplots()
plot_1(ax_1)
plot_1(ax_2)
plot_2(ax_2)
这将用 contourf 绘制两个图形,但只有一个用散点图绘制。
我想在一个函数中生成一个图形,然后能够在另一个函数中向该图添加其他内容。我希望这两个图(原始图和编辑后的图)都可供将来使用。类似于:
import numpy as np
import matplotlib.pyplot as plt
def plot_1():
X, Y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 50))
z = np.random.rand(50, 100)
fig, ax = plt.subplots()
ax.contourf(X, Y, z, cmap="viridis")
return fig
def plot_2(fig):
ax = fig.axes[0]
ax.scatter([2, 5], [1, 4], zorder=2.5, color="r")
return ax
f = plot_1()
f2 = plot_2(f)
然而,这改变了原始图像(我想保持原样)并且 return 不是 f2
中的可打印图形。起初我认为问题是散点图没有完成,但正如卢卡斯在评论中所建议的那样,这不是实际问题,因为它可以用 zorder
.[=13= 的正确值来解决]
我怎样才能做到这一点?
如果我理解正确的话:你想要两个数字,在两个数字中绘制相同的图形,然后只在一个图形中绘制一些额外的图形。
这样做的方法是在函数外部创建图形并将轴传递给函数:
import numpy as np
import matplotlib.pyplot as plt
def plot_1(ax):
X, Y = np.meshgrid(np.linspace(0, 10, 100), np.linspace(0, 10, 50))
z = np.random.rand(50, 100)
ax.contourf(X, Y, z, cmap="viridis")
def plot_2(ax):
ax.scatter([2, 5], [1, 4], zorder=2.5, color="r")
fig_1, ax_1 = plt.subplots()
fig_2, ax_2 = plt.subplots()
plot_1(ax_1)
plot_1(ax_2)
plot_2(ax_2)
这将用 contourf 绘制两个图形,但只有一个用散点图绘制。