【发布时间】:2017-11-17 13:35:19
【问题描述】:
我正在尝试创建四个子图,其轴代表不同方向上的不同距离范围 [km],但右下角子图的 x 轴表示计数。在所有子图中,所有距离轴都应具有相同的比例。此外,顶部的两个子图应共享其 y 轴,左侧的两个子图应共享其 x 轴。
按照issue(其解决方案适用于 x 轴和 y 轴的相等限制),我尝试了 sharex、sharey、aspect 和可调参数的几种组合,但均未成功。
有没有办法实现这种绘图,尤其是在不影响任何轴限制的情况下?
这是我的 MCVE:
import matplotlib.pyplot as plt
lim1 = [0.,30.]
lim2 = [0.,15.]
lim3 = [0.,75.]
lim4 = [0,5]
xdat = [12.,25.]
ydat = [6.,12.]
zdat = [50.,25.]
cdat = [1,1]
fig = plt.figure()
ax1 = plt.subplot(221,aspect='equal',adjustable='box-forced')
ax1.plot(xdat,ydat,'o')
ax1.set_xlim(lim1)
ax1.set_ylim(lim2)
ax2 = plt.subplot(222,aspect='equal',adjustable='box-forced',sharey=ax1)
ax2.plot(zdat,ydat,'o')
ax2.set_xlim(lim3)
ax3 = plt.subplot(223,aspect='equal',adjustable='box-forced',sharex=ax1)
ax3.plot(xdat,zdat,'o')
ax3.set_ylim(lim3)
ax4 = plt.subplot(224)
ax4.plot(cdat,zdat,'o')
ax4.set_xlim(lim4)
ax4.set_ylim(lim3)
plt.show()
我想得到类似于下图中的图,它显示了我上面提到的共享轴,保持原始轴限制和不同距离轴上的相同比例。
我目前正在使用:
平台:Linux Ubuntu 14.04.5 LTS
matplotlib:1.5.1
蟒蛇:2.7.14
【问题讨论】:
-
我猜“相同比例”确实会过度约束系统。除了代码按预期工作,那么您希望情节看起来如何?
-
@ImportanceOfBeingErnest “过度约束系统”是什么意思?顺便说一句,我刚刚更新了我的问题,包括一张关于情节应该是什么样子的图像。
-
您显示的图的纵横比不相等。因此,如果您删除有关相等方面的约束,则绘图看起来很好。
-
@ImportanceOfBeingErnest 该图没有相等的纵横比,因为我删除了该约束(aspect='equal'),只是为了显示应如何共享子图轴。但我需要该约束以在子图轴上保持相同的比例。
-
可以画出你想象中的情节的样子吗?
标签: python matplotlib