이 질문 과 매우 유사 하지만 내 그림이 필요한만큼 커질 수 있다는 차이점이 있습니다.
matplotlib에 수직으로 쌓인 플롯을 모두 생성해야합니다. 결과는 figsave를 사용하여 저장되고 웹 페이지에서 볼 수 있으므로 하위 그림이 간격을두고 겹치지 않는 한 최종 이미지의 높이는 중요하지 않습니다.
내가 얼마나 큰 숫자를 허용하더라도 하위 그림은 항상 겹치는 것처럼 보입니다.
내 코드는 현재
import matplotlib.pyplot as plt
import my_other_module
titles, x_lists, y_lists = my_other_module.get_data()
fig = plt.figure(figsize=(10,60))
for i, y_list in enumerate(y_lists):
plt.subplot(len(titles), 1, i)
plt.xlabel("Some X label")
plt.ylabel("Some Y label")
plt.title(titles[i])
plt.plot(x_lists[i],y_list)
fig.savefig('out.png', dpi=100)
답변
사용해보십시오 plt.tight_layout
간단한 예를 들면 다음과 같습니다.
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=4, ncols=4)
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
plt.show()
단단한 레이아웃없이
단단한 레이아웃
답변
plt.subplots_adjust
서브 플롯 (소스) 간 간격을 변경하는 데 사용할 수 있습니다.
통화 서명 :
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
매개 변수 의미 (및 제안 된 기본값)는 다음과 같습니다.
left = 0.125 # the left side of the subplots of the figure
right = 0.9 # the right side of the subplots of the figure
bottom = 0.1 # the bottom of the subplots of the figure
top = 0.9 # the top of the subplots of the figure
wspace = 0.2 # the amount of width reserved for blank space between subplots
hspace = 0.2 # the amount of height reserved for white space between subplots
실제 기본값은 rc 파일에 의해 제어됩니다
답변
subplots_adjust (hspace = 0.001)이 저에게 효과적이라는 것을 알았습니다. space = None을 사용하면 각 플롯 사이에 여전히 공백이 있습니다. 그러나 0에 매우 가까운 것으로 설정하면 줄을서야합니다. 내가 여기에 업로드 한 것은 가장 우아한 코드는 아니지만 hspace의 작동 방식을 볼 수 있습니다.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as tic
fig = plt.figure()
x = np.arange(100)
y = 3.*np.sin(x*2.*np.pi/100.)
for i in range(5):
temp = 510 + i
ax = plt.subplot(temp)
plt.plot(x,y)
plt.subplots_adjust(hspace = .001)
temp = tic.MaxNLocator(3)
ax.yaxis.set_major_locator(temp)
ax.set_xticklabels(())
ax.title.set_visible(False)
plt.show()
답변
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10,60))
plt.subplots_adjust( ... )
plt.subplots_adjust의 방법 :
def subplots_adjust(*args, **kwargs):
"""
call signature::
subplots_adjust(left=None, bottom=None, right=None, top=None,
wspace=None, hspace=None)
Tune the subplot layout via the
:class:`matplotlib.figure.SubplotParams` mechanism. The parameter
meanings (and suggested defaults) are::
left = 0.125 # the left side of the subplots of the figure
right = 0.9 # the right side of the subplots of the figure
bottom = 0.1 # the bottom of the subplots of the figure
top = 0.9 # the top of the subplots of the figure
wspace = 0.2 # the amount of width reserved for blank space between subplots
hspace = 0.2 # the amount of height reserved for white space between subplots
The actual defaults are controlled by the rc file
"""
fig = gcf()
fig.subplots_adjust(*args, **kwargs)
draw_if_interactive()
또는
fig = plt.figure(figsize=(10,60))
fig.subplots_adjust( ... )
그림의 크기가 중요합니다.
“나는 hspace로 혼란을 시도했지만 그것을 늘리면 오버랩 문제를 해결하지 않고 모든 그래프를 작게 만드는 것 같습니다.”
따라서 더 많은 공백을 만들고 하위 플롯 크기를 유지하려면 총 이미지가 더 커야합니다.
답변
subplot_tool () 시도해 볼 수 있습니다
plt.subplot_tool()
답변
tight_layout
현재 matplotlib 와 유사합니다 (버전 2.2 기준) constrained_layout
. 대조적으로 tight_layout
하나의 최적화 된 배치에 대한 코드의 임의의 시간이라고 할 수있다, constrained_layout
활성화 될 수 있고 모든 드로잉 공정 전에 레이아웃을 optimze하는 속성이다.
따라서 서브 플롯 생성 전 또는 동안 (예 : figure(constrained_layout=True)
또는)을 활성화해야합니다 subplots(constrained_layout=True)
.
예:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(4,4, constrained_layout=True)
plt.show()
constrained_layout은 다음을 통해 설정할 수도 있습니다. rcParams
plt.rcParams['figure.constrained_layout.use'] = True
참고 항목 의 새로운 항목 과 제한된 레이아웃 가이드