3
나는 subplot2grid를 사용하여 서로 다른 행과 열로 이루어진 여러 개의 서브 플로트로 matplotlib에서 하나의 그림을 만들려고합니다. 예를 들어tight_layout이 실패 할 때 수평 서브 플롯 간격을 줄이는 방법은 무엇입니까?
, 다음 코드를이 같은 도면하게
import matplotlib.pyplot as plt
import numpy as n
fig = plt.figure()
ax1 = plt.subplot2grid((2, 5), (0, 0), rowspan=2, colspan=2)
ax2 = plt.subplot2grid((2, 5), (0, 2))
ax2_2 = plt.subplot2grid((2, 5), (0, 3))
ax2_3 = plt.subplot2grid((2, 5), (0, 4))
ax3 = plt.subplot2grid((2, 5), (1, 2), colspan=3) #, sharex=ax2)
xs = n.linspace(0, 2*n.pi, 100)
ax1.plot(xs, n.sin(xs))
ax2.plot(xs, n.cos(xs))
ax2_2.plot(xs, n.tan(xs))
ax2_3.plot(xs, n.sin(xs))
ax3.plot(xs, n.cos(xs))
ax2.set_xticklabels([])
ax2.set_yticklabels([])
ax2_2.set_xticklabels([])
ax2_2.set_yticklabels([])
ax2_3.set_xticklabels([])
ax2_3.set_yticklabels([])
# This comes from a separate attempt to make the ticks invisible, but seems to make no change.
plt.setp(ax2.get_xticklabels(), visible=False)
plt.setp(ax2.get_yticklabels(), visible=False)
plt.setp(ax2_2.get_xticklabels(), visible=False)
plt.setp(ax2_2.get_yticklabels(), visible=False)
plt.setp(ax2_3.get_xticklabels(), visible=False)
plt.setp(ax2_3.get_yticklabels(), visible=False)
fig.set_size_inches(6.5, 2.85)
fig.tight_layout()
# I tried several things here - subplots_adjust improves the vertical spacing a little, but not the horizontal.
fig.subplots_adjust(hspace=0.1)
fig.savefig('test.png', dpi=100)
:
문제는 각각의 우측 상단에있는 3 단세포 줄거리 인 는 너비의 약 70 % 만 맞습니다. 그렇지 않으면 tight_layout이 공간을 멋지게 처리하지만,이 공간이 채워지지 않은 이유 또는 해결 방법을 찾을 수 없습니다.
그래서 ... 누구든지이 방법을 알고 서브 플로트의 전체 너비를 사용할 수 있습니까?
오른쪽 상단에있는 3 개의 플롯은 올바르지 만 왼쪽과 오른쪽 사이의 축 레이블과 눈금 레이블은 이제 겹칩니다. 그것은 방향을 시도하는 좋은 단서를 준다. 그래서 고마워! – inclement
@ 중복이 중복을 피하려면 다음을 늘릴 수 있습니다 :'ax1.yaxis.labelpad' –