Introduction

과학 차트는 연구 논문, 연구비 제안서, 학회 포스터의 시각적 중추 역할을 합니다. 잘 만든 플롯은 추세, 불확실성, 관계 등을 텍스트 단락보다 더 명확하게 전달합니다. 그러나 연구자가 통계 패키지에서 그림을 내보낼 때, 충실도, 메타데이터 또는 재현성을 잃을 위험이 급증합니다. 도구‑특정 비트맵이나 독점 벡터를 보편적으로 받아들여지는 출판 준비 포맷으로 변환하는 작업은 단순한 ‘다른 이름으로 저장’ 클릭이 아닙니다; 색 정확도, 글꼴 렌더링, 확장성, 장기 접근성 등에 영향을 미치는 일련의 결정 과정입니다. 이 글에서는 각 결정 포인트를 단계별로 살펴보고, 과학적 메시지를 온전히 유지하면서 저널, 리뷰어, 아카이빙 서비스가 불만 없이 받아들일 수 있는 파일을 제공하기 위한 구체적인 명령, 설정, 검증 절차를 제시합니다.


학술 출판을 위한 벡터 포맷의 중요성

벡터 그래픽은 픽셀 고정 그리드가 아니라 수학적으로 형태를 표현합니다. 이 차이는 두 가지 실용적인 장점을 제공합니다. 첫째, 벡터는 무한히 확대 가능하며; 72 dpi로 그린 선은 5 mm 라벨이든 24‑인치 포스터이든 선명하게 표시됩니다. 둘째, 벡터는 텍스트, 축, 범례와 같이 의미론적으로 중요한 요소를 보존하므로 스크린 리더가 인덱싱하거나 나중에 스타일을 재조정할 수 있습니다. 대부분의 과학 저널이 PDF, EPS, SVG 형식의 그림을 요구하기 때문에, 작업 흐름 초기에 이러한 포맷 중 하나로 변환하면 래스터‑투‑벡터 재생성이라는 다운스트림 문제를 피할 수 있습니다. 또한, 공개되고 문서화된 사양을 사용하면 미래의 폐기 위험을 방지할 수 있습니다: 오늘의 SVG는 10년 후에도 브라우저와 벡터 편집기에서 읽을 수 있습니다.


적절한 대상 포맷 선택

포맷장점단점
SVG완전한 XML 기반, 텍스트 편집기에서 편집 가능, 웹 호환성 우수, CSS 스타일 지원일부 오래된 저널 제출 포털이 SVG를 거부하거나 PDF/EPS 변환을 요구
PDF (벡터 전용)출판사에서 보편적으로 허용, 글꼴과 색 프로파일 포함, 페이지 레이아웃 유지내보낸 후 편집성이 제한적; 페이지마다 별도 캔버스가 되므로 다중 패널 그림에 불편
EPS인쇄용 오랜 표준, 전통적인 LaTeX 워크플로와 호환색 공간 처리 구식, 파일 크기 크게, 메타데이터 지원 미흡

실제로 가장 안전한 경로는 SVG로 내보낸 뒤 출력을 검증하고, 필요한 경우 신뢰할 수 있는 벡터 인식 변환기를 사용해 PDF나 EPS로 변환하는 것입니다. 이 2단계 접근법을 통해 원본 소스 파일을 깨끗하게 보관하고, 다양한 venue에 맞춰 재사용할 수 있습니다.


분석 도구에서 원본 데이터 준비

과학 플롯의 가장 흔한 출처는 MATLAB, Python (Matplotlib, Seaborn, Plotly), R (ggplot2, lattice), Origin, Microsoft Excel입니다. 도구와 관계없이 다음 준비 단계는 내보낸 벡터의 품질을 크게 향상시킵니다.

  1. 픽셀이 아닌 인치 단위로 그림 크기 설정 – 벡터 내보내기는 물리적 크기를 존중하므로 인쇄 시 글꼴과 선 두께가 의도한 크기로 나타납니다.
  2. 벡터 호환 글꼴 사용 – Helvetica, Arial, 저널이 지정한 Times New Roman 등 널리 보급된 서체를 고수합니다. 시스템 전용 글꼴은 변환 중 대체될 수 있습니다.
  3. 명시적 색 공간 정의 – 인쇄용이면 CMYK, 웹‑중심 venue이면 sRGB를 사용합니다. 많은 도구가 기본값으로 sRGB를 쓰지만, 색 프로파일 설정으로 재정의할 수 있습니다.
  4. 마커와 선에 대한 안티앨리어싱 비활성화 – 일부 라이브러리는 SVG 내보낼 때 얇은 선을 흐리게 만들 수 있습니다; 안티앨리어싱을 끄면 기하학이 더 깔끔해집니다.
  5. 플롯 뒤에 있는 데이터 내보내기 – 그림과 함께 CSV 또는 JSON 형태로 데이터 세트를 저장합니다. 이는 재현성 및 리뷰어가 원본 데이터를 요구할 경우 플롯을 재생성하는 데 필수적입니다.

Matplotlib에서의 구체적인 예시:

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Helvetica'
plt.rcParams['svg.fonttype'] = 'none'   # 텍스트를 경로가 아닌 텍스트로 유지
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(x, y, linewidth=1.2, color='#0072B2')
fig.savefig('figure.svg', format='svg', dpi=300)

svg.fonttype = 'none' 플래그는 텍스트를 편집 가능한 상태로 보존하므로 이후 수정이 용이합니다.


글꼴, 기호, 글리프 보존

벡터 파일을 다른 컴퓨터에서 열면 누락된 글꼴이 일반 글꼴로 대체돼 레이아웃이 깨지는 경우가 흔합니다. 이를 방지하려면 대상 포맷이 허용할 경우 글꼴을 내장하세요 (PDF와 EPS는 내장 지원, SVG는 @font-face 혹은 Base64 데이터로 내장 가능). 대부분의 최신 내보내기 옵션에 “글꼴 내장” 체크박스가 있으며, 없을 경우 InkscapeGhostscript 같은 후처리 도구로 수동 내장을 수행합니다.

기호—수학 연산자, 그리스 문자, 사용자 정의 마커—도 또 다른 문제 원천입니다. 예를 들어 R의 ggplot2에서 geom_text() 함수에 Unicode 문자 자체를 사용하도록 지정하면 SVG 내보내기 시 도형으로 변환되지 않고 그대로 살아갑니다. MATLAB에서는 exportgraphics 함수에 'ContentType','vector' 파라미터를 주면 기호가 벡터 경로로 유지되지만, 저널이 검색 가능한 텍스트를 요구한다면 올바른 MathML 또는 TeX 인코딩을 확인해야 합니다.


색 프로파일 및 일관성 관리

색 정확도는 생물학(염색 강도)이나 재료 과학(상 대비 이미지)처럼 색이 의미를 갖는 분야에서 특히 중요합니다. 두 가지 측면을 다뤄야 합니다.

  1. 색 공간 선택 – 인쇄형 저널에는 CMYK, 디지털 전용 venue에는 sRGB를 선택합니다. Adobe Illustrator 같은 도구는 저장 전 색 모드를 전환할 수 있고, 프로그래밍 워크플로에서는 cairosvg--color-profile 옵션을 지원합니다.
  2. ICC 프로파일 내장 – 국제 색 협회(ICC) 프로파일은 다양한 디바이스에서 색을 어떻게 해석할지 정의합니다. SVG에서는 <metadata> 태그로, PDF에서는 색 공간 사전에 저장됩니다. 커맨드라인 도구로 변환할 때는 다음과 같이 프로파일을 추가합니다:
cairosvg input.svg -o output.pdf --output-profile path/to/ISOcoated_v2_icc.icc

프로파일을 내장하면 리뷰어의 PDF 뷰어에서도 색이 의도대로 렌더링됩니다.


확장성 보장: 벡터 vs. 래스터 요소

명목상 벡터 파일이라도 배경 사진, 히트맵, 비트맵 로고와 같은 래스터 이미지가 섞일 수 있습니다. 이러한 요소는 확대 시 픽셀화됩니다. 경험 법칙은 최종 인쇄 크기에서 300 ppi 이하의 래스터 이미지만 사용하는 것입니다. 래스터 이미지를 반드시 넣어야 한다면 JPEG 대신 무손실 PNG를 사용하고, 요구 해상도에 맞는 원본 PNG를 제공하세요.

수천 개 마커가 있는 산점도처럼 점이 밀집된 플롯의 경우, 일부 내보내기 툴은 파일 크기를 줄이기 위해 자동으로 마커를 래스터화합니다. 마커 렌더링 모드를 “벡터”로 명시적으로 설정하면 이 동작을 무시할 수 있습니다. Matplotlib에서는 path.simplify=False 파라미터가 복잡한 마커가 래스터 블롭으로 변환되는 것을 방지합니다.


출처 및 접근성을 위한 메타데이터 내장

메타데이터는 과학적 무결성을 지키는 조용한 수호자입니다. 잘 문서화된 그림은 다음 정보를 담아야 합니다.

  • 제목 및 캡션 – 시각화된 데이터에 대한 간결한 설명.
  • 저자 및 소속 – 귀속을 명확히 함.
  • 작성 날짜와 소프트웨어 버전 – 정확한 환경 재현 가능.
  • 데이터 소스 참조 – DOI 또는 원본 데이터셋 URL.

SVG에서는 <metadata> 요소에 RDF 또는 Dublin Core 어휘를 사용해 메타데이터를 추가하고, PDF에서는 Document Information Dictionary/Title, /Author, 사용자 정의 /Keywords 필드를 저장합니다. 명령줄에서 메타데이터를 삽입하거나 검증하려면 exiftool 혹은 pdfinfo를 사용합니다:

exiftool -Title="Growth Curve of Species X" -Author="A. Researcher" -CreatorTool="Matplotlib 3.8" figure.svg

출처 데이터를 내장하면 저널 요구 사항을 충족할 뿐 아니라 향후 독자와 데이터 마이닝 툴에도 도움이 됩니다.


주석, 범례, 축 라벨 처리

주석은 텍스트, 도형, 화살표가 뒤섞여 있어 가장 깨지기 쉬운 부분입니다. 이를 온전히 보존하려면:

  • 관련 객체를 그룹화한 뒤 내보냅니다. 그룹화된 범례는 SVG 계층 구조에서 하나의 논리 단위로 유지됩니다.
  • 주석을 비트맵 스크린샷으로 만들지 말고, 벡터 프리미티브로 재구성합니다.
  • 레이어 사용 (예: Adobe Illustrator 혹은 Inkscape)으로 주요 데이터와 설명 텍스트를 구분합니다. 파일을 열 때 레이어를 토글하면 빠른 편집이 가능합니다.

다중 패널 그림을 변환할 경우, 각 패널이 일관된 글꼴 크기와 선 두께를 유지하도록 합니다. 흔히 발생하는 실수는 내보내기가 각 패널을 독립적으로 재스케일해 축이 어긋나는 것입니다. 전체 그림을 하나의 캔버스로 내보낸 뒤, 벡터 편집기에서 정확한 치수를 제어하며 패널을 나누세요.


주요 플로팅 환경 별 내보내기 설정

아래는 가장 많이 쓰이는 환경별 권장 내보내기 명령입니다.

MATLAB

set(gcf,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
print(gcf,'-depsc2','-r300','figure.eps');   % EPS with embedded fonts
exportgraphics(gcf,'figure.pdf','ContentType','vector');

Python (Matplotlib)

import matplotlib.pyplot as plt
plt.rcParams['svg.fonttype'] = 'none'   # keep text editable
fig.savefig('figure.svg', format='svg')

R (ggplot2)

ggsave('figure.pdf', width=6, height=4, units='in', device=cairo_pdf)
# For SVG with embedded fonts
ggsave('figure.svg', width=6, height=4, units='in')

OriginLabFile → Export Graph → Vector 를 선택하고 SVG 또는 PDF 를 선택합니다. Embed fonts 옵션을 체크하고 적절한 색 공간을 지정하세요.
Microsoft Excel – 차트를 오른쪽 클릭 → Save as PictureSVG 선택 (Office 365에서 사용 가능). 그런 다음 Inkscape에서 SVG를 열어 글꼴을 내장하고 색 프로파일을 조정합니다.


후처리 검증

변환은 검증이 뒤따라야 의미가 있습니다. 저널에 그림을 제출하기 전에 다음을 확인하세요.

  1. 100 % 및 200 % 확대 상태에서 시각적 검사 – 선이 선명하고 텍스트가 읽히는지 확인합니다.
  2. 비트맵 미리보기 내보내기 (300 dpi PNG) 후 원본 플롯과 나란히 비교해 색 미세 변화를 잡아냅니다.
  3. 체크섬 실행 (예: SHA‑256) 후 원고와 함께 저장합니다. 이는 리뷰어에게 변조되지 않은 파일임을 증명합니다.
  4. 다중 뷰어에서 파일 테스트 – Adobe Acrobat, Inkscape, 웹 브라우저 등. 차이가 발생하면 글꼴 누락이나 색 프로파일 문제가 의심됩니다.
  5. 메타데이터 검증exiftool -a -G1 -s (SVG/PNG) 혹은 pdfinfo (PDF) 사용.

문제가 발견되면 내보내기 설정을 다시 조정하거나 벡터 편집기에서 타깃 수정을 수행합니다. 예를 들어, 문제 있는 텍스트 요소만 윤곽선으로 변환하고 나머지는 editable 상태로 유지하면 호환성 문제를 크게 줄일 수 있습니다.


대량 그림에 대한 배치 변환 자동화

연구 프로젝트에서는 수십 개의 플롯이 생성되는 경우가 흔합니다. 수동 내보내기는 병목이 되기 쉽습니다. 스크립트와 커맨드라인 변환기를 조합하면 자동화가 가능합니다.

  • Python + cairosvg – 디렉터리 내 SVG를 PDF로 일괄 변환:
import pathlib, subprocess
for svg in pathlib.Path('figs/').glob('*.svg'):
    pdf = svg.with_suffix('.pdf')
    subprocess.run(['cairosvg', str(svg), '-o', str(pdf)])
  • Shell + Ghostscript – PDF를 ICC 프로파일을 포함한 EPS로 배치 변환:
for f in *.pdf; do
  gs -dNOPAUSE -dBATCH -sDEVICE=eps2write \
     -sOutputFile="${f%.pdf}.eps" -sICCProfile=ISOcoated_v2.icc "$f"
done
  • Node.js + SVGO – 보관 전 SVG 최적화 (불필요한 메타데이터 제거):
const svgo = new (require('svgo'))();
const fs = require('fs');
fs.readdirSync('raw/').forEach(file => {
  if (file.endsWith('.svg')) {
    const data = fs.readFileSync(`raw/${file}`, 'utf8');
    svgo.optimize(data, {path: file}).then(res => {
      fs.writeFileSync(`opt/${file}`, res.data);
    });
  }
});

전체 툴체인을 설치하고 싶지 않을 때는 convertise.app 같은 서비스가 브라우저 내에서 개별 파일을 변환해 주어 데이터가 서버에 저장되지 않도록 할 수 있습니다.


일반적인 함정과 예방 방법

함정증상예방
텍스트를 윤곽선으로 평면화텍스트 검색 불가, 글꼴 정보 손실글꼴 내장 활성화; Matplotlib에서는 svg.fonttype='none' 설정
색 프로파일 누락장치마다 색이 흐리게 보이거나 변색내보낼 때 명시적으로 ICC 프로파일을 삽입하거나 Ghostscript으로 후처리
벡터 레이어 래스터화파일 크기 급증, 확대 시 품질 저하“내보낼 때 래스터화” 옵션을 비활성화; 마커를 벡터 기반으로 유지
내장 래스터 이미지 해상도 부족인쇄 시 흐릿함최종 크기에서 300 ppi 이상 확보; 무손실 PNG 사용
패널 간 선 두께 불일치다중 패널 그림에서 시각적 불균형스크립트 환경에서 전역 linewidth 변수를 정의한 뒤 플롯 생성

이러한 문제를 사전에 인식하고 워크플로에 품질 검사를 삽입하면 원고 제출 지연을 크게 줄일 수 있습니다.


그림 보관 및 미래 대비

오랜 기간 동안 파일을 읽을 수 있게 하려면 SVGPDF/A가 가장 미래‑보장형 선택입니다. 그림을 최종 확정한 뒤에는 다음 내용을 담은 README 파일을 함께 저장하세요.

  • 사용한 소프트웨어 버전(e.g., matplotlib 3.8.0)
  • 운영 체제
  • 정확한 내보내기 커맨드 라인
  • 사용한 ICC 프로파일 경로
  • SHA‑256 체크섬

Figure, source data, README 를 Git 같은 버전 관리 저장소 혹은 ZENODO와 같은 신뢰할 수 있는 디지털 아카이브에 함께 보관합니다. 이 방식은 재현성 요구 사항을 충족할 뿐 아니라 저널이 포맷 가이드를 업데이트하더라도 그림을 손쉽게 재생성할 수 있게 합니다.


Conclusion

과학 차트를 출판‑준비 벡터 파일로 변환하는 과정은 미학, 기술 사양, 재현성을 균형 있게 맞춰야 하는 체계적인 작업입니다. 그림 크기 표준화, 적절한 글꼴 선택, 색 프로파일 관리, 출처 메타데이터 삽입, 최종 출력 검증을 표준화함으로써 연구자는 동료 심사와 장기 보관을 견뎌낼 수 있는 시각 데이터를 제공할 수 있습니다. 자동화 도구와 가벼운 웹 서비스(예: convertise.app) 를 활용하면 수동 작업을 크게 줄이고, 과학자는 파일 손질보다 분석에 집중할 수 있습니다. 이 실천법을 마스터하면 여러분이 만든 모든 차트가 데이터와 마찬가지로 견고하고 재사용 가능하게 될 것입니다.