【发布时间】:2015-09-08 10:19:26
【问题描述】:
这是一个与"How to plot pcolor colorbar in a different subplot - matplotlib" 非常相似的问题。我正在尝试在单独的子图中绘制一个填充的等高线图和一个带有共享轴和颜色条的线图(即,它不会占用 contourf 轴的空间,因此会破坏 x 轴共享)。但是,我的代码中的 x 轴不能很好地重新缩放:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
z = np.random.rand(20, 20)
x, y = np.arange(20), np.arange(20)
y2 = np.random.rand(20)
fig = plt.figure(figsize=(8, 8))
gs = mpl.gridspec.GridSpec(2, 2, height_ratios=[1, 2], width_ratios=[2, 1])
ax1 = fig.add_subplot(gs[1, 0])
ax2 = fig.add_subplot(gs[0, 0], sharex=ax1)
ax3 = fig.add_subplot(gs[1, 1])
cont = ax1.contourf(x, y, z, 20)
plt.tick_params(which='both', top=False, right=False)
ax2.plot(x, y2, color='g')
plt.tick_params(which='both', top=False, right=False)
cbar = plt.colorbar(cont, cax=ax3)
cbar.set_label('Intensity', rotation=270, labelpad=20)
plt.tight_layout()
plt.show()
这会产生一个从 0 到 20(含)而不是 0 到 19 的 x 轴,这意味着填充的等高线图中存在难看的空白。在上面的代码中注释掉 sharex=ax1 意味着等高线图的 x 轴缩放得很好,但对于上面的线图则没有,plt.tick_params 代码对任一轴都没有影响。
有没有办法解决这个问题?
【问题讨论】:
-
我将情节作为图像包含在内。仅凭您的描述很难理解问题。如果您不喜欢这个地方,请随意编辑和(重新)移动它。
-
ax1.set_xlim(0, 19)应该是一个快速的解决方法。 -
谢谢,塞尔。奇怪的是,添加
ax1.set_xlim不起作用。我应该在问题中提到这一点。contourf的行为似乎是出乎意料的(对我来说),它干扰或阻止了轴方法。 -
按照@cel 的建议设置
xlim对我有用:i.imgur.com/LvR3UnF.png -
对不起,@cel 和 @tom,我是个白痴。使用
set_xlim工作正常。此外,使用ax1.set_params()有效,而plt.set_params()无效。不知道为什么。
标签: python matplotlib