파이썬 플롯을 매우 높은 품질로 저장하려면 어떻게해야합니까?
즉, 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로 들어가거나 와이드 스크린 형식으로 나타나기를 원합니다.