我确实想通过单独的函数使用mathplotlib创建两个图像对象。我想将这些图像合并为一张图像。
示例:
#!/usr/bin/env python3
import matplotlib.pyplot as plt
def plot1():
fig = plt.figure()
plt.plot([1, 2], [1, 2], '-',color=(0,100/256,170/256))
return fig
def plot2():
fig = plt.figure()
plt.plot([1, 2], [0, 3], '-',color=(0.5,0.5,0.5))
return fig
fig = plt.figure()
fig1 = plot1
fig2 = plot2
产生两个图像:
fig1.show()
fig2.show()
但是如何将它们结合起来呢?
fig(fig1,fig2); fig.show()
挑战在于我不想直接访问(x,y)值-仅通过函数。像这样:
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
fig.show()
到目前为止,不会这样做,因为我的知识库很小。寻求帮助。
答案 0 :(得分:1)
如果通过合并表示将两条线/函数同时绘制在一个图形中,则只需定义一次plt.figure
对象。绘制后,您无需返回任何对象,因为绘制将在函数外部一次定义的图形对象中完成。
import matplotlib.pyplot as plt
fig = plt.figure()
def plot1():
plt.plot([1, 2], [1, 2], '-',color=(0,100/256,170/256))
return
def plot2():
plt.plot([1, 2], [0, 3], '-',color=(0.5,0.5,0.5))
return
plot1()
plot2()
另一个选择是
fig, axes = plt.subplots()
,然后使用axes
以
axes.plot([1, 2], [1, 2], '-',color=(0,100/256,170/256))
这将进一步允许您使用轴实例axes
修改图表/绘图属性。
使用功能来做
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
def plot1(ax): # ax now points to ax1
ax.plot(x, y)
ax.set_title('Sharing Y axis')
def plot2(ax): # ax now points to ax2
ax.scatter(x, y)
plot1(ax1) # Pass the first axis instance
plot2(ax2) # Pass the second axis instance
fig.show()