각 그림에 대해 사용자 정의 축 (위치 및 크기)을 사용하여 하나의 복잡한 그림으로 뭉치고 싶은 독립 스크립트에 의해 생성 된 여러 개의 그림이 있습니다. 나는이 접근법이 지금까지 matplotlib에 의해 잘 지원되지 않는 것 같다는 것을 알고 있지만, 나는 그것을 시도하기로 결정했다.축이 새 그림에 추가 될 때 그림 모양이 유지되지 않습니다.
지금 당장은 각 패널을 원하는 패널에 복사 할 수 있지만 "복사 된"그림은 어떻게 든 잘리고 축이 엉망입니다. 그리고 솔직히 말해서 matplotlib에 비교적 익숙하지 않기 때문에 (Matlab copyobj()에서) 빠져있는 것이 무엇인지 모릅니다. 예를 들어 트릭을했을 것입니다.
def customfigure(flist,axlist):
# Margins
lm = 0.05
rm = 0.05
bm = 0.05
tm = 0.05
# basic grid
nrow = 2
ncol = 2
# rulers
hr = 0.02
vr = 0.02
# axis width
aw = (1-lm-rm-(ncol-1)*hr)/ncol
# axis height
ah = (1-tm-bm-(nrow-1)*vr)/nrow
# Make axis box
ax = [None]*(ncol*nrow)
ax[0] = [lm,bm,aw,ah]
ax[1] = [lm,bm+ah+vr,aw,ah]
ax[2] = [lm+aw+hr,bm,aw,ah]
ax[3] = [lm+aw+hr,bm+ah+vr,aw,ah]
fig = plt.figure(figsize=(10,6),dpi=80)
# Solution 1
for i in xrange(len(axlist)):
axlist[i].set_position(ax[i])
axlist[i].set_figure(fig)
flist[i].delaxes(axlist[i])
fig.add_axes(axlist[i])
close('all')
fig = [None]*4
ax = [None]*4
x = array([range(10)])
close('all')
fig = [None]*4
ax = [None]*4
t = arange(0.0, 2.0, 0.01)
color = ['k','r','g','b']
for i in xrange(4):
fig[i],ax[i] = plt.subplots()
s = sin(2*(i+1)*pi*t)
plt.plot(t, s,'-',color=color[i])
show()
customfigure(fig,ax)
(나는 초보자 여기에 붙여 넣을 수 없습니다 유감스럽게도) customfigure에 의해 만들어 마지막 그림()이 적어도 두 가지 문제가 있습니다를 : 다음
는내가 테스트를 위해 사용하고, 샘플 코드입니다 그림 : (1) - 복사 한 그림의 크기가 set_position() 인스턴스 (2)에 의해 예상되는 크기가 아닙니다. - 주 그림에서 덩어리 진 원래 그림은 데이터 범위가 1.0 인 경우 잘린 것처럼 보입니다. x 축은 2.0까지 올라갑니다.) (3) - 그러면 축의 위치가 완전히 나사로 고정됩니다.
내가 뭘 잘못 했니?
미리 도움을 주셔서 감사합니다.
안녕하세요 John, 멋진 아이디어를 주셔서 감사합니다. 먼저 수치를 생성하고 복잡한 수치로 전체를 뭉 갠다는 주된 이유는 긴 인 쇄 시간을 필요로하는 긴 스크립트로 독립 수치가 생성되기 때문입니다. 그래서 아이디어는 먼저 수치를 저장 한 다음 파일에서 열어 단일 숫자로 덩어리를 작성하는 것이 었습니다. 왜 이것이 불가능할 지 이해할 수 없다. 나는 [이] (https://www.mail-archive.com/[email protected]/msg06032.html)을 발견했다. 그러나 나는 나의 형상을 올바르게 바꿀 방법을 모른다. – maurizio