[python] 매우 높은 품질로 파이썬으로 이미지 저장

파이썬 플롯을 매우 높은 품질로 저장하려면 어떻게해야합니까?

즉, pdf 파일에 저장된 개체를 계속 확대하면 흐릿함이 없습니까?

또한 저장하기에 가장 좋은 모드는 무엇입니까?

png, eps? 아니면 다른? 컴파일 pdf을 엉망으로 만드는 숨겨진 숫자 가 있기 때문에 할 수 없습니다 Latexmk.



답변

matplotlib라텍스 문서를 사용 하고 있고 좋은 수치를 얻으려면 eps로 저장하십시오. 특히, 이미지를 플롯하는 명령을 실행 한 후 다음과 같이 시도하십시오.

plt.savefig('destination_path.eps', format='eps')

eps 파일이 가장 잘 작동하고 dpi매개 변수가 문서에서 실제로보기 좋게 만드는 요소 라는 것을 발견했습니다 .

최신 정보:

저장하기 전에 Figure의 방향을 지정하려면 호출하기 전에 다음을 호출하기 만하면됩니다 plt.savefig. 그러나 플롯을 만든 후에 는 다음을 호출하십시오 (이름이라는 축을 사용하여 플로팅했다고 가정 ax).

ax.view_init(elev=elevation_angle, azim=azimuthal_angle)

여기서 elevation_angle이다 (도) 수 (수직 Z 축에서 아래쪽) 극각을 지정하고, azimuthal_angle지정 (z 축 주위) 방위각.

먼저 이미지를 플로팅 한 다음 회전하고 현재 각도 값이 실제 플롯 바로 아래 창 아래쪽에 나타나는 것을 확인하여 이러한 값을 결정하는 것이 가장 쉽다는 것을 알았습니다. x, y, z, 위치는 기본적으로 표시되지만 이미지를 클릭 + 드래그 + 회전하기 시작하면 두 각도로 대체됩니다.


답변

결과를 추가하려면 matplotlib도 사용하십시오.

.eps는 모든 텍스트를 굵게 만들고 투명도를 제거했습니다. .svg는 실제로 내 그래프처럼 보이는 고해상도 사진을 제공했습니다.

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Do the plot code
fig.savefig('myimage.svg', format='svg', dpi=1200)

많은 과학 저널에서 이미지가 무엇인지에 따라 1200 / 600 / 300dpi의 이미지를 요구하기 때문에 1200dpi를 사용했습니다. GiMP 또는 Inkscape에서 원하는 dpi 및 형식으로 변환합니다.

편집 : .svg가 벡터 그래픽이고 “무한 해상도”를 갖기 때문에 분명히 dpi는 중요하지 않습니다.


답변

좋아, 나는 spencerlyon2의 답변이 작동하는 것을 발견했지만 누군가가 그 한 줄로 무엇을 해야할지 모르는 경우를 대비하여 다음과 같이해야했습니다.

beingsaved = plt.figure()

# some scatters
plt.scatter(X_1_x, X_1_y)
plt.scatter(X_2_x, X_2_y)

beingsaved.savefig('destination_path.eps', format='eps', dpi=1000)


답변

Seaborn 과 함께 작업하는 경우matplotlib 대신 플롯 과 같이 .png 이미지를 저장할 수 있습니다.

matrix개체 (pandas 또는 numpy)가 있고 히트 맵을 가져오고 싶다고 가정 해 보겠습니다 .

import seaborn as sb

image = sb.heatmap(matrix)   # this gets you the heatmap
image.figure.savefig("C:/Your/Path/ ... /your_image.png")   # this saves it

이 코드는 최신 버전의 seaborn과 호환됩니다. stackoverflow 주변의 다른 코드는 이전 버전에서만 작동했습니다.

내가 좋아하는 또 다른 방법은 이것입니다. 다음 이미지의 크기를 다음과 같이 설정합니다.

plt.subplots(figsize=(15,15))

그런 다음 나중에 콘솔에 출력을 플로팅하여 원하는 곳에 복사하여 붙여 넣을 수 있습니다. (seaborn은 matplotlib 위에 빌드되었으므로 문제가 없습니다.)


답변

다음을 사용하여 1920×1080 (또는 1080p) 인 Figure로 저장할 수 있습니다.

fig = plt.figure(figsize=(19.20,10.80))

훨씬 더 높거나 낮게 갈 수도 있습니다. 위의 솔루션은 인쇄에 적합하지만 요즘에는 생성 된 이미지가 PNG / JPG로 들어가거나 와이드 스크린 형식으로 나타나기를 원합니다.


답변