如何在子图中绘制数字(Matplotlib)

时间:2015-05-06 09:12:09

标签: python matplotlib plot

据我所知,有多种方法可以在一个图中绘制多个图形。一种方法是使用轴,例如

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([range(8)])
ax.plot(...)

由于我有一个美化我的图形并随后返回图形的函数,我想用这个图形绘制在我的子图中。它看起来应该类似于:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(figure1) # where figure is a plt.figure object
ax.plot(figure2)

这不起作用,但我怎样才能使它工作?有没有办法将数字放在子图或一个变通方法中,在一个整体图中绘制多个数字?

非常感谢任何帮助。 提前感谢您的意见。

2 个答案:

答案 0 :(得分:3)

如果目标只是定制单个子图,为什么不改变你的功能来动态改变当前的数字而不是返回一个数字。从matplotlibseaborn开始,您可以在绘制时更改绘图设置吗?

import numpy as np
import matplotlib.pyplot as plt

plt.figure()

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')

import seaborn as sns

plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

enter image description here

也许我完全不了解你的问题。这是美化'功能复杂?...

答案 1 :(得分:1)

可能的解决方案是

import matplotlib.pyplot as plt

# Create two subplots horizontally aligned (one row, two columns)
fig, ax = plt.subplots(1,2)
# Note that ax is now an array consisting of the individual axis

ax[0].plot(data1) 
ax[1].plot(data2)

但是,为了工作data1,2需要数据。如果您有一个已经为您绘制数据的函数,我建议您在函数中包含axis参数。例如

def my_plot(data,ax=None):
    if ax == None:
        # your previous code
    else:
        # your modified code which plots directly to the axis
        # for example: ax.plot(data)

然后你可以将其绘制成

import matplotlib.pyplot as plt

# Create two subplots horizontally aligned
fig, ax = plt.subplots(2)
# Note that ax is now an array consisting of the individual axis

my_plot(data1,ax=ax[0])
my_plot(data2,ax=ax[1])