据我所知,有多种方法可以在一个图中绘制多个图形。一种方法是使用轴,例如
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)
这不起作用,但我怎样才能使它工作?有没有办法将数字放在子图或一个变通方法中,在一个整体图中绘制多个数字?
非常感谢任何帮助。 提前感谢您的意见。
答案 0 :(得分:3)
如果目标只是定制单个子图,为什么不改变你的功能来动态改变当前的数字而不是返回一个数字。从matplotlib和seaborn开始,您可以在绘制时更改绘图设置吗?
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()
也许我完全不了解你的问题。这是美化'功能复杂?...
答案 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])