以编程方式在 matplotlib 中绘制重叠偏移图
Programmatically drawing overlaid offset plots in matplotlib
我有 3 个不同的图,目前每个图都保存为单独的图形。但是,由于 space 限制,我想将它们彼此分层并像这样偏移:
我想表达的是,每个地块都存在类似的模式,这是一种很好且紧凑的方式。我想使用 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)
您可以手动创建要绘制的轴并根据需要放置它们。
为了强调这种方法修改你的例子如下
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)
给出的情节类似于
在这里,我使用fig.add_axes
将手动创建的轴对象添加到预定义的图形对象中。参数指定新创建的轴的位置和大小,请参阅 docs。
请注意,我还将轴背景设置为透明 (axisbg='None'
)。
我有 3 个不同的图,目前每个图都保存为单独的图形。但是,由于 space 限制,我想将它们彼此分层并像这样偏移:
我想表达的是,每个地块都存在类似的模式,这是一种很好且紧凑的方式。我想使用 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)
您可以手动创建要绘制的轴并根据需要放置它们。 为了强调这种方法修改你的例子如下
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)
给出的情节类似于
在这里,我使用fig.add_axes
将手动创建的轴对象添加到预定义的图形对象中。参数指定新创建的轴的位置和大小,请参阅 docs。
请注意,我还将轴背景设置为透明 (axisbg='None'
)。