programing

Matplotlib 그림 얼굴색(배경색)

javamemo 2023. 8. 28. 20:42
반응형

Matplotlib 그림 얼굴색(배경색)

누가 피규어의 페이스 컬러를 설정할 때 아래 코드가 작동하지 않는 이유를 설명해주실 수 있나요?

import matplotlib.pyplot as plt

# create figure instance
fig1 = plt.figure(1)
fig1.set_figheight(11)
fig1.set_figwidth(8.5)

rect = fig1.patch
rect.set_facecolor('red') # works with plt.show().  
                          # Does not work with plt.savefig("trial_fig.png")

ax = fig1.add_subplot(1,1,1)

x = 1, 2, 3
y = 1, 4, 9
ax.plot(x, y)

# plt.show()  # Will show red face color set above using rect.set_facecolor('red')

plt.savefig("trial_fig.png") # The saved trial_fig.png DOES NOT have the red facecolor.

# plt.savefig("trial_fig.png", facecolor='red') # Here the facecolor is red.

그림의 높이와 너비를 지정할 때fig1.set_figheight(11) fig1.set_figwidth(8.5)이것들은 명령에 의해 선택됩니다.plt.savefig("trial_fig.png")그러나 얼굴색 설정이 선택되지 않습니다. 왜죠?

도와주셔서 고마워요.

왜냐하면.savefig그림 배경의 얼굴색을 재정의합니다.

(이것은 의도적인 것입니다, 사실...이 가정은 저장된 그림의 배경색을 다음과 같이 제어할 수 있습니다.facecolor로의 싸움.savefig하지만 혼란스럽고 일관성 없는 기본값입니다!)

가장 쉬운 해결 방법은fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')(실제 그림의 기본 가장자리 색은 흰색이므로 저장된 그림 주위에 흰색 테두리가 표시됩니다.)

savefig에 대한 고유한 매개 변수가 있습니다.facecolor제 생각에 허용된 답변보다 훨씬 쉬운 방법은 한 번만 글로벌하게 설정하는 것입니다.facecolor=fig.get_facecolor()매번:

plt.rcParams['axes.facecolor']='red'
plt.rcParams['savefig.facecolor']='red'

이니셜과 함께 선택한 색상을 얻으려면 투명 키워드를 사용해야 했습니다.

fig=figure(facecolor='black')

다음과 같이:

savefig('figname.png', facecolor=fig.get_facecolor(), transparent=True)

추가만 하면 됩니다.facecolor='red'에게plt.savefig()충분합니다.예:

plt.savefig('figname.png', facecolor='red')

언급URL : https://stackoverflow.com/questions/4804005/matplotlib-figure-facecolor-background-color

반응형