numpy / scipy에는 이미지가 배열에 저장되어 있습니다. 표시 할 수 있습니다. 테두리, 축, 레이블, 제목 savefig
없이 사용하여 저장하고 싶습니다 . 순수한 이미지 만 있으면됩니다.
내가 좋아하는 패키지를 피하려고 PyPNG
또는 scipy.misc.imsave
그들은 항상 기본적인 잘 설치하지 마십시오 (그들은 때로는 문제가있다, savefig()
나를 위해
답변
편집하다
변경 aspect='normal
에 aspect='auto'
즉하기 matplotlib의 최신 버전 (Luke19 @ 덕분에) 변화하기 때문이다.
가정 :
import matplotlib.pyplot as plt
프레임없이 그림을 만들려면 :
fig = plt.figure(frameon=False)
fig.set_size_inches(w,h)
내용을 전체 그림으로 채우려면
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
그런 다음 이미지를 그립니다.
ax.imshow(your_image, aspect='auto')
fig.savefig(fname, dpi)
aspect
매개 변수는 반드시 그들이에 지정된 숫자의 크기를 채울 수 있도록 픽셀 크기를 변경합니다 fig.set_size_inches(…)
. 이러한 종류의 작업을 수행하는 방법을 알아 보려면 특히 Axes, Axis 및 Artist 주제에 대한 matplotlib의 문서를 읽어보십시오 .
답변
더 쉬운 해결책은 다음과 같습니다.
fig.savefig('out.png', bbox_inches='tight', pad_inches=0)
답변
축 내에서 이미지의 bbox를 찾고 (사용 get_window_extent
) bbox_inches
매개 변수를 사용 하여 이미지의 해당 부분 만 저장할 수 있습니다.
import numpy as np
import matplotlib.pyplot as plt
data=np.arange(9).reshape((3,3))
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
plt.axis('off')
plt.imshow(data)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('/tmp/test.png', bbox_inches=extent)
나는 여기 에서 Joe Kington에게서이 트릭을 배웠다 .
답변
제 경우에는 몇 가지 옵션을 시도했는데 가장 좋은 해결책은 다음과 같습니다.
fig.subplots_adjust(bottom = 0)
fig.subplots_adjust(top = 1)
fig.subplots_adjust(right = 1)
fig.subplots_adjust(left = 0)
그런 다음 그림을 저장하십시오. savefig
답변
bbox를 타이트 모드로 설정 한 후 남은 패딩을 제거하기 위해 여기 에서 약간의 추가를 빌려 heron13 답변을 제안 합니다.
axes = fig.axes()
axes.get_xaxis().set_visible(False)
axes.get_yaxis().set_visible(False)
fig.savefig('out.png', bbox_inches='tight', pad_inches=0)
답변
이것은 나를 위해 일합니다
plt.savefig('filename',bbox_inches='tight',transparent=True, pad_inches=0)
답변
다른 정보없이 플롯의 내용을 추출하려는 librosa를 사용하여 시각화를 수행하는 동안 동일한 문제가 발생했습니다 . 그래서 이것은 나의 접근 방식입니다. unutbu 대답은 또한 내가 일할 수 있도록 도와줍니다.
figure = plt.figure(figsize=(500, 600), dpi=1)
axis = plt.subplot(1, 1, 1)
plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off',
labelright='off', labelbottom='off')
# your code goes here. e.g: I used librosa function to draw a image
result = np.array(clip.feature_list['fft'].get_logamplitude()[0:2])
librosa.display.specshow(result, sr=api.Clip.RATE, x_axis='time', y_axis='mel', cmap='RdBu_r')
extent = axis.get_window_extent().transformed(figure.dpi_scale_trans.inverted())
plt.savefig((clip.filename + str("_.jpg")), format='jpg', bbox_inches=extent, pad_inches=0)
plt.close()