Savefig 출력 빈 이미지
matplotlib을 사용하여 만든 플롯을 저장하려고 하지만 이미지가 공백으로 저장됩니다.
내 코드는 다음과 같습니다.
plt.subplot(121)
plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.subplot(122)
y = copy.deepcopy(tumorStack)
y = np.ma.masked_where(y == 0, y)
plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest')
if T0 is not None:
plt.subplot(123)
plt.imshow(T0, cmap=mpl.cm.bone)
#plt.subplot(124)
#Autozoom
#else:
#plt.subplot(124)
#Autozoom
plt.show()
plt.draw()
plt.savefig('tessstttyyy.png', dpi=100)
그리고 tesssttyyy.png이 비어 있습니다(.jpg로도 시도됨).
첫째, 다음과 같은 경우에 발생합니다.T0 is not None
저는 그것을 테스트하고, 제가 전달하는 값을 조정할 것입니다.plt.subplot()
아마도 131, 132, 133 값을 시도하거나, 또는 그것의 여부에 따라 달라지는 값을 시도할 수 있습니다.T0
존재한다.
둘째, 다음plt.show()
이 호출되면 새 그림이 생성됩니다.이 문제를 해결하기 위해, 당신은
불러
plt.savefig('tessstttyyy.png', dpi=100)
전화하기 전에plt.show()
그림을 저장합니다.
show()
전화로plt.gcf()
"현재 수치 가져오기"에 대해 전화할 수 있습니다.savefig()
이에 대하여Figure
언제든지 반대합니다.
예:
fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)
코드에서 'tesstyyy.png'은 아무것도 플롯되지 않은 새 도형을 저장하기 때문에 비어 있습니다.
plt.show()
다음에 와야 합니다.plt.savefig()
설명:plt.show()
모든 것을 클리어하기 때문에 이후에 새로운 빈 도형에서 어떤 일이 발생할 것입니다.
문제를 해결한 함수의 순서를 변경합니다.
- 먼저 플롯 저장
- 그런 다음 그림 표시
다음과 같이:
plt.savefig('heatmap.png')
plt.show()
show() 전에 savefig를 호출하는 것이 저에게 효과가 있었습니다.
fig ,ax = plt.subplots(figsize = (4,4))
sns.barplot(x='sex', y='tip', color='g', ax=ax,data=tips)
sns.barplot(x='sex', y='tip', color='b', ax=ax,data=tips)
ax.legend(['Male','Female'], facecolor='w')
plt.savefig('figure.png')
plt.show()
좀 더 자세한 예를 들어 보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
def draw_result(lst_iter, lst_loss, lst_acc, title):
plt.plot(lst_iter, lst_loss, '-b', label='loss')
plt.plot(lst_iter, lst_acc, '-r', label='accuracy')
plt.xlabel("n iteration")
plt.legend(loc='upper left')
plt.title(title)
plt.savefig(title+".png") # should before plt.show method
plt.show()
def test_draw():
lst_iter = range(100)
lst_loss = [0.01 * i + 0.01 * i ** 2 for i in xrange(100)]
# lst_loss = np.random.randn(1, 100).reshape((100, ))
lst_acc = [0.01 * i - 0.01 * i ** 2 for i in xrange(100)]
# lst_acc = np.random.randn(1, 100).reshape((100, ))
draw_result(lst_iter, lst_loss, lst_acc, "sgd_method")
if __name__ == '__main__':
test_draw()
언급URL : https://stackoverflow.com/questions/9012487/savefig-outputs-blank-image
'source' 카테고리의 다른 글
Javascript 클래스 인스턴스를 일반 개체 보존 메서드로 변환 (0) | 2023.07.06 |
---|---|
Java에서 Oracle 함수 호출 (0) | 2023.07.06 |
SQL 서버에서 저장 프로시저의 예약된 실행 (0) | 2023.07.06 |
의견요청 : 모든 테이블에 대해 하나의 시퀀스 (0) | 2023.07.06 |
SQL만 사용하여 기본 36에서 기본 10으로 변환 (0) | 2023.07.06 |