合并图形或子图对象

时间:2018-10-09 10:06:24

标签: python matplotlib

我确实想通过单独的函数使用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()
到目前为止,

不会这样做,因为我的知识库很小。寻求帮助。

1 个答案:

答案 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()

enter image description here

另一个选择是

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()

enter image description here