以编程方式在matplotlib中绘制重叠的偏移图

时间:2015-01-09 21:51:31

标签: python matplotlib

我有3个不同的图,目前每个图都保存为单独的图。但是,由于空间限制,我想将它们叠加在一起并像这样偏移:

Example image

我试图传达每个情节都存在类似的模式,这是一种很好而紧凑的方式。我想以编程方式使用matplotlib绘制这样的图形,但我不确定如何使用通常的pyplot命令对图形进行分层和偏移。任何的意见都将会有帮助。以下代码是我目前的骨架。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

window = 100
xs = np.arange(100)
ys = np.zeros(100)
ys[80:90] = 1
y2s = np.random.randn(100)/5.0+0.5

with sns.axes_style("ticks"):
    for scenario in ["one", "two", "three"]:
        fig = plt.figure()
        plt.plot(xs, ys)
        plt.plot(xs, y2s)
        plt.title(scenario)
        sns.despine(offset=10)

1 个答案:

答案 0 :(得分:5)

您可以手动创建轴以根据需要绘制并定位它们。 要突出显示此方法修改了您的示例,如下所示

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

window = 100
xs = np.arange(100)
ys = np.zeros(100)
ys[80:90] = 1
y2s = np.random.randn(100)/5.0+0.5

fig = plt.figure()
with sns.axes_style("ticks"):
    for idx,scenario in enumerate(["one", "two", "three"]):
        off = idx/10.+0.1
        ax=fig.add_axes([off,off,0.65,0.65], axisbg='None')
        ax.plot(xs, ys)
        ax.plot(xs, y2s)
        ax.set_title(scenario)
        sns.despine(offset=10)

给出了如图的情节 enter image description here

在这里,我使用fig.add_axes将手动创建的轴对象添加到预定义的图形对象中。参数指定新创建的轴的位置和大小,请参阅docs。 请注意,我还将轴背景设置为透明(axisbg='None')。