1
我想有兩個子圖,其中第一個子圖平方,x軸和y軸共享相同的限制。除此之外,第二個圖應該共享相同的x軸,但是具有獨立的y軸。方形的陰謀與子圖共享,共享x軸
最後的結果應該是這樣的:
如何獲得這種形式的陰謀?
我想有兩個子圖,其中第一個子圖平方,x軸和y軸共享相同的限制。除此之外,第二個圖應該共享相同的x軸,但是具有獨立的y軸。方形的陰謀與子圖共享,共享x軸
最後的結果應該是這樣的:
如何獲得這種形式的陰謀?
的想法是需要一個固定的figsize
和附加到這個使用GridSpec
,給定figsize
內的工作,以確保,該空間是我們想要的方式使用。
以下部分將生成一個平方圖和一個較小的子圖,其固定的height_ratio
爲3:1。的原因figsize
是,我們希望有一個正方形(其確定該圖的width
是3
和4
(=3+1
一個高度在高度比率給出)。
fig = plt.figure(figsize=(3, 4))
gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1])
爲了填補這一缺口的次要情節之間,我們知道給予額外的參數hspace=0
。
fig = plt.figure(figsize=(3, 4))
gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1], hspace=0)
一個完整的工作示例可能看起來像這樣:
import pylab as plt
import numpy as np
from matplotlib.ticker import MaxNLocator
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(3, 4))
gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1],hspace=0)
# generate some random test data
datatemp = np.random.random_sample((100,2))
datatemp2 = np.random.random_sample((100,2))*np.array([1,2])
ax0 = plt.subplot(gs[0])
ax0.scatter(*datatemp.T)
ax1 = plt.subplot(gs[1],sharex=ax0)
ax1.scatter(*datatemp2.T)
ax0.grid(True)
ax1.grid(True)
ax0.set_xlim(0,1)
ax0.set_ylim(0,1)
ax1.set_ylim(0,2)
# cosmetics
ax1.axes.get_yaxis().set_major_locator(MaxNLocator(prune='upper'))
ax1.set_yticks(np.arange(0,2,0.5))
plt.setp(ax0.get_xticklabels(), visible=False)