所以我有一个我想要绘制的数据集。在这种情况下,我想在同一个图上绘制所有数据,然后在自己的图上绘制集中的每个点,但保持每个图的轴刻度/限制相同。
所以我需要做的是找到为整套数据设置的自动调整轴限制的值,并将这些限制应用于每个单独点的图形。
我一直在阅读mpl文档,看看是否可以使用任何类型的函数来返回轴限制值,但到目前为止我还没有找到任何内容。
我使用Python 3.4和matplotlib
谢谢, evamvid
答案 0 :(得分:3)
虽然可以通过
找到限制 xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
并使用
将它们设置在另一个轴上ax2.set_xlim(xmin, xmax)
ax2.set_ylim(ymin, ymax)
将plt.subplots
与sharex=True
和sharey=True
一起使用可能会更容易:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(2015)
N = 5
x, y = np.random.randint(100, size=(2,N))
fig, axs = plt.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
colors = np.linspace(0, 1, N)
axs[0,0].scatter(x,y, s=200, c=colors)
for i, ax in enumerate(axs.ravel()[1:]):
ax.scatter(x[i], y[i], s=200, c=colors[i], vmin=0, vmax=1)
plt.show()
另一种选择是pass an axes to sharex and sharey:
ax3 = subplot(313, sharex=ax1, sharey=ax1)
例如,
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import itertools as IT
np.random.seed(2015)
N = 6
x, y = np.random.randint(100, size=(2,N))
colors = np.linspace(0, 1, N)
gs = gridspec.GridSpec(4, 2)
ax = plt.subplot(gs[0, :])
ax.scatter(x, y, s=200, c=colors)
for k, coord in enumerate(IT.product(range(1,4), range(2))):
i, j = coord
ax = plt.subplot(gs[i, j], sharex=ax, sharey=ax)
ax.scatter(x[k], y[k], s=200, c=colors[k], vmin=0, vmax=1)
plt.tight_layout()
plt.show()