> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ko/field-specific/08-pgfplots-package.md).

# Pgfplots 패키지

## 소개

다음 `pgfplots` 기반이 되는 패키지 [`TikZ`](/latex/ko/figures-and-tables/05-tikz-package.md)은 강력한 시각화 도구이며 과학/기술 그래픽을 만드는 데 이상적입니다. 기본 아이디어는 입력 데이터/수식을 제공하면 `pgfplots` 나머지를 처리한다는 것입니다.

### 문서 프리앰블

다음을 사용하려면 `pgfplots` 패키지를 문서에 추가하려면 프리앰블에 다음 줄을 넣으세요:

`\usepackage{pgfplots}`

또한 다음의 동작을 구성할 수도 있습니다 `pgfplots` 문서 프리앰블에서. 예를 들어, 각 플롯의 크기를 변경하고 하위 호환성을 보장하려면(권장) 다음 줄을 추가하세요:

`\pgfplotsset{width=10cm,compat=1.9}`

이렇게 하면 각 `pgfplot` 그림의 크기가 10센티미터로 바뀌는데, 이는 매우 큽니다. 다른 단위(pt, mm, in)를 사용할 수도 있습니다. *compat* 매개변수는 코드가 패키지 버전 1.9 이상에서 동작하도록 하기 위한 것입니다.

### 컴파일 시간(간단한 배경 설명)

원래의 TeX 엔진이 구상/작성되었을 당시, 40년이 훨씬 넘었을 때는 *직접적인* 그래픽 생성용으로 설계되지 않았습니다. 그래픽은 외부 프로그램(예: MetaPost)으로 만든 파일을 조판된 문서에 가져오는 방식이었습니다. 원래 TeX 소프트웨어에 기반한 pdfTeX의 등장으로 그래픽을 생성할 수 있는 기능이 생겼습니다 *직접* pdfTeX의 새로운 내장 TeX 언어 명령어( *원시 명령*라고 불리는)를 사용하여 PDF 연산자/데이터를 출력함으로써 그래픽을 생성할 수 있게 되었습니다. pdfTeX의 출시는 `TikZ`, `pgfplots` 등과 같은 정교한 LaTeX 그래픽 패키지의 개발로 이어졌고, 이 패키지들은 고수준 LaTeX 명령으로 작성된 그래픽을 생성할 수 있습니다.

하지만 내부적으로, 그리고 pdfTeX 엔진(및 다른 엔진) 깊숙한 곳에서는 이러한 고수준 LaTeX 그래픽 명령을 실제로 결과 그림을 생성(출력)하는 데 필요한 저수준 pdfTeX 엔진(primitive) 명령으로 다시 "변환"하여 처리해야 합니다. 그래픽 LaTeX 명령의 이러한 처리—primitive의 확장과 실행—에는 적지 않은 시간이 걸릴 수 있습니다. 단 하나의 고수준 LaTeX 그래픽 명령조차도 그에 대응하는 데이터와 함께 *많은* 저수준 TeX 엔진(primitive) 명령의 반복 실행을 필요로 할 수 있습니다. 최종 사용자 관점에서 보면, 여러 `pgfplots` 그림이나 매우 복잡한 그래픽을 포함한 문서는 렌더링(컴파일)하는 데 상당한 시간이 걸릴 수 있습니다.

### 컴파일 시간 줄이기

문서 컴파일 속도를 높이려면 `pgfplots` 패키지를 설정하여 그림을 별도의 PDF 파일로 내보낸 다음 문서로 가져올 수 있습니다: 한 번 컴파일한 뒤, 그 그림을 재사용하세요. 이를 위해 아래 코드를 프리앰블에 추가하세요:

```
\usepgfplotslibrary{external}
\tikzexternalize
```

참고 [이 도움말 문서](/latex/ko/questions-and-answers/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) 에서 Overleaf 프로젝트에서 tikz 외부화를 설정하는 방법에 대한 자세한 내용을 확인하세요.

## 기본 예제(그림 외부화 포함)

```latex
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% 우리는 그림을 외부화할 것입니다
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

첫 번째 예제는 2D와 3D 수식이 나란히 표시됩니다.

%여기서 2D 플롯이 시작됩니다
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%여기서 2D 플롯이 끝납니다
\hskip 5pt
%여기서 3D 플롯이 시작됩니다
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%여기서 3D 플롯이 끝납니다

\end{document}
```

[이 예제를 `pgfplots` Overleaf에서 여세요.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%0A%25+We+will+externalize+the+figures%0A%5Cusepgfplotslibrary%7Bexternal%7D%0A%5Ctikzexternalize%0A%0A%5Cbegin%7Bdocument%7D%0A%0AFirst+example+is+2D+and+3D+math+expressions+plotted+side-by-side.%0A%0A%25Here+begins+the+2D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot%5Bcolor%3Dred%5D%7Bexp%28x%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+2D+plot%0A%5Chskip+5pt%0A%25Here+begins+the+3D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D%0A%7Bexp%28-x%5E2-y%5E2%29%2Ax%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+3D+plot%0A%0A%5Cend%7Bdocument%7D)

다음 이미지는 위 코드로 생성된 결과를 보여줍니다:

![Plgplotsex1OLV2.png](/files/2f7a125f9778990f46fc244146188872f671b3ff)

### 코드 설명

왜냐하면 `pgfplots` 은 기반으로 합니다 `tikz` 플롯은 반드시 `tikzpicture` 환경 안에 있어야 합니다. 그러면 환경 선언이 `\begin{axis}`, `\end{axis}` 플롯에 맞는 올바른 스케일을 설정합니다. 다른 축 환경은 [참조 안내서](#reference-guide) 를 확인하세요.

실제 플롯을 추가하려면 명령 `\addplot[color=red]{log(x)};` 를 사용합니다. 대괄호 안에는 `[...]`몇 가지 옵션을 전달할 수 있습니다. 여기서는 `색상을` 플롯의 `red`으로 설정합니다. 대괄호는 필수이며, 옵션을 전달하지 않는 경우에는 그 사이를 비워 두세요. 중괄호 안에는 그릴 함수를 넣습니다. 이 명령은 세미콜론(;)으로 끝나야 한다는 점을 기억하는 것이 중요합니다.

첫 번째 플롯 옆에 두 번째 플롯을 놓으려면 새로운 `tikzpicture` 환경을 선언하세요. 새 줄을 넣지 말고, 이 경우에는 작은 공백을 넣으면 됩니다. `hskip 10pt` 가 10pt 너비의 공백을 삽입합니다.

나머지 문법은 동일하지만 `\addplot3 [surf,]{exp(-x^2-y^2)*x};`는 다릅니다. 이것은 3dplot을 추가하며, 옵션 `surf` 대괄호 안에서 표면 플롯임을 선언합니다. 그릴 함수는 중괄호 안에 넣어야 합니다. 다시 한번, 명령 끝에 세미콜론(;)을 붙이는 것을 잊지 마세요.

**참고**: 좋은 관례로 코드를 들여쓰기하는 것이 권장됩니다—위 예제의 두 번째 플롯을 보세요—그리고 `\addplot`에 전달된 각 옵션의 끝에 쉼표(,)를 추가하세요. 이렇게 하면 코드의 가독성이 좋아지고, 필요할 때 추가 옵션을 넣기도 더 쉬워집니다.

## 2D 플롯

`pgfplots`의 2D 플로팅 기능은 매우 다양하며, 요구 사항에 맞게 플롯을 개인화할 수 있습니다. 그럼에도 기본 옵션만으로도 보통 매우 좋은 결과를 얻을 수 있으므로, 여러분이 할 일은 데이터를 넣는 것뿐이고 LaTeX가 나머지를 처리합니다.

### 수학식 플로팅

예시는 다음과 같습니다:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%아래에는 빨간 포물선이 정의됩니다
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%여기에는 파란 포물선이 정의됩니다
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf에서 여세요.](https://www.overleaf.com/docs?engine=\&snip_name=pgfplots+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++axis+lines+%3D+left%2C%0A++++xlabel+%3D+%5C%28x%5C%29%2C%0A++++ylabel+%3D+%7B%5C%28f%28x%29%5C%29%7D%2C%0A%5D%0A%25Below+the+red+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dred%2C%0A%5D%0A%7Bx%5E2+-+2%2Ax+-+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+-+2x+-+1%5C%29%7D%0A%25Here+the+blue+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dblue%2C%0A++++%5D%0A++++%7Bx%5E2+%2B+2%2Ax+%2B+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+%2B+2x+%2B+1%5C%29%7D%0A%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Plgplotsex2.png](/files/c36cb07365796530e82aa16b814d80b8a7ef3ec9)

#### 코드 설명

새 명령들을 한 줄씩 살펴보겠습니다:

**axis lines = left.**

이렇게 하면 기본 상자 대신 플롯의 왼쪽과 아래쪽에만 축이 배치됩니다. 추가 사용자 지정 옵션은 참조 가이드를 확인하세요.

**xlabel = (x) 및 ylabel = {(f(x))}.**

이름이 직관적인 매개변수로, 수평 및 수직 축에 레이블을 붙일 수 있습니다. 중괄호 안에 있는 ylabel 값을 보세요. 이 괄호는 pgfplots에게 텍스트를 어떻게 묶을지 알려줍니다. xlabel도 중괄호를 가질 수 있었습니다. 이는 pgfplots를 혼란스럽게 할 수 있는 복잡한 레이블에 유용합니다.

**\addplot.**

이것은 축에 플롯을 추가합니다. 일반적인 사용법은 소개에서 설명했습니다. 이 예제에는 두 개의 새로운 매개변수가 있습니다.

**domain=-10:10.**

이는 x 값의 범위를 설정합니다.

**samples=100.**

domain으로 정의된 구간 내의 점 개수를 결정합니다. samples 값이 클수록 그래프가 더 매끄럽지만 렌더링하는 데 더 오래 걸립니다.

**\addlegendentry{(x^2 - 2x - 1)}.**

이는 함수 x^2 - 2x - 1을 식별하기 위한 범례를 추가합니다.

플롯에 다른 그래프를 추가하려면 새 `\addplot` 항목을 작성하기만 하면 됩니다.

### 데이터로부터 플로팅

과학 연구에서는 분석해야 하는 데이터가 자주 생깁니다. 다음 예제는 다음을 사용하여 데이터를 그리는 방법을 보여줍니다 *pgfplots*:

```latex
데이터로부터 플로팅:

\begin{tikzpicture}
\begin{axis}[
    title={CuSO\(_4\cdot\)5H\(_2\)O 용해도의 온도 의존성},
    xlabel={온도 [\textcelsius]},
    ylabel={용해도 [물 100 g당 g]},
    xmin=0, xmax=100,
    ymin=0, ymax=120,
    xtick={0,20,40,60,80,100},
    ytick={0,20,40,60,80,100,120},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
    };
    \legend{CuSO\(_4\cdot\)5H\(_2\)O}

\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf에서 여세요.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0APlotting+from+data%3A%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3D%7BTemperature+dependence+of+CuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O+solubility%7D%2C%0A++++xlabel%3D%7BTemperature+%5B%5Ctextcelsius%5D%7D%2C%0A++++ylabel%3D%7BSolubility+%5Bg+per+100+g+water%5D%7D%2C%0A++++xmin%3D0%2C+xmax%3D100%2C%0A++++ymin%3D0%2C+ymax%3D120%2C%0A++++xtick%3D%7B0%2C20%2C40%2C60%2C80%2C100%7D%2C%0A++++ytick%3D%7B0%2C20%2C40%2C60%2C80%2C100%2C120%7D%2C%0A++++legend+pos%3Dnorth+west%2C%0A++++ymajorgrids%3Dtrue%2C%0A++++grid+style%3Ddashed%2C%0A%5D%0A%0A%5Caddplot%5B%0A++++color%3Dblue%2C%0A++++mark%3Dsquare%2C%0A++++%5D%0A++++coordinates+%7B%0A++++%280%2C23.1%29%2810%2C27.5%29%2820%2C32%29%2830%2C37.8%29%2840%2C44.6%29%2860%2C61.8%29%2880%2C83.8%29%28100%2C114%29%0A++++%7D%3B%0A++++%5Clegend%7BCuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O%7D%0A++++%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Plgplotsex3.png](/files/5efaff61bfeac9b84febae7252f1c3e1d8963b2c)

#### 코드 설명

여기에는 몇 가지 새로운 명령과 매개변수가 있습니다:

**title={CuSO(\_4\cdot)5H(\_2)O 용해도의 온도 의존성}.**

예상하듯이, 그림의 제목을 지정합니다. 제목은 플롯 위에 표시됩니다.

**xmin=0, xmax=100, ymin=0, ymax=120.**

x축과 y축의 최소 및 최대 경계입니다.

**xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}.**

표식이 배치되는 지점입니다. 비어 있으면 눈금은 자동으로 설정됩니다.

**legend pos=north west.**

범례 상자의 위치입니다. 더 많은 옵션은 참조 가이드를 확인하세요.

**ymajorgrids=true.**

이것은 y축의 눈금 위치에 그리드 선을 표시하거나 숨깁니다. x축의 그리드 선을 표시하려면 xmajorgrids를 사용하세요.

**grid style=dashed.**

이름 그대로입니다. 점선 그리드 선을 표시합니다.

**mark=square.**

이것은 coordinates 배열의 각 점에 사각형 표식을 그립니다. 각 표식은 다음 표식과 직선으로 연결됩니다.

**coordinates {(0,23.1)(10,27.5)(20,32)...}**

그려질 점들의 좌표입니다. 이것이 그래픽으로 분석하려는 데이터입니다.

대부분의 경우처럼 데이터가 파일에 있다면; 명령 대신 `\addplot` 및 `coordinates` 를 사용해야 합니다 `\addplot table {file_with_the_data.dat}`나머지 옵션은 이 환경에서 유효합니다.

### 산점도

산점도는 어떤 종류의 표식을 사용하여 정보를 나타내며, 일반적으로 통계적 회귀를 계산할 때 사용됩니다. 이 예제에서는 다음 파일에 들어 있는 데이터를 사용하여 산점도를 만들겠습니다 `scattered_example.dat`이며, 데이터는 다음과 같습니다:

```
GPA  ma  ve  co   un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37
...
```

우리의 산점도는 데이터의 처음 두 열을 사용합니다:

```latex
\begin{tikzpicture}
\begin{axis}[
    enlargelimits=false,
]
\addplot+[
    only marks,
    scatter,
    mark=halfcircle*,
    mark size=2.9pt]
table[meta=ma]
{scattered_example.dat};
\end{axis}
\end{tikzpicture}
```

![Scattered.png](/files/25e02244ce0fc85af89df9e0b12e4ee0cbcf8a1c)

[Overleaf에서 산점도 프로젝트 예제를 열어보세요(데이터 파일 포함 `scattered_example.dat`).](https://www.overleaf.com/project/new/template/20099?id=68399290\&templateName=Scatter+plot+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

#### 코드 설명

\에 전달되는 매개변수들은 `axis` 및 `addplot` 환경에서 데이터 플롯에도 사용할 수 있지만, `scatter`는 제외됩니다. 아래에 코드 설명이 나옵니다:

**enlarge limits=false**

이렇게 하면 최대값과 최소값을 가진 점이 플롯의 가장자리에 놓이도록 축이 줄어듭니다.

**only marks**

매우 명시적으로, 각 점에 표식을 넣습니다.

**scatter**

scatter가 사용되면 점들은 어떤 값에 따라 색이 지정되며, 그 색은 아래에서 설명하는 meta 매개변수로 주어집니다.

**mark=halfcircle**\*

각 점에 사용할 표식의 종류입니다. 가능한 값 목록은 참조 가이드를 확인하세요.

**mark size=2.9pt**

각 표식의 크기입니다. 다른 단위를 사용할 수 있습니다.

**table\[meta=ma]{scattered\_example.dat};**

여기서 table 명령은 latex에게 그릴 데이터가 파일에 있음을 알려줍니다. meta=ma 매개변수는 각 점의 색을 결정하는 열을 선택하기 위해 전달됩니다. 중괄호 안에는 데이터 파일 이름이 들어 있습니다.

### 막대 그래프

막대 그래프(막대 차트 및 바 플롯이라고도 함)는 수집된 데이터를, 주로 어떤 집단에 대한 통계 데이터를 표시하는 데 사용됩니다. 의 막대 플롯은 `pgfplots` 매우 다양한 설정이 가능하지만, 여기서는 간단한 예제를 보여드리겠습니다:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		\/pgf\/number format\/1000 sep=},
	ylabel=연도,
	enlargelimits=0.05,
	legend style={at={(0.5,-0.1)},
	anchor=north,legend columns=-1},
	ybar interval=0.7,
]
\addplot
	coordinates {(2012,408184) (2011,408348)
		 (2010,414870) (2009,412156)};
\addplot
	coordinates {(2012,388950) (2011,393007)
		(2010,398449) (2009,395972)};
\legend{Men,Women}
\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf의 막대 코드 예제.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+bar+chart+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A%09x+tick+label+style%3D%7B%0A%09%09%2Fpgf%2Fnumber+format%2F1000+sep%3D%7D%2C%0A%09ylabel%3DYear%2C%0A%09enlargelimits%3D0.05%2C%0A%09legend+style%3D%7Bat%3D%7B%280.5%2C-0.1%29%7D%2C%0A%09anchor%3Dnorth%2Clegend+columns%3D-1%7D%2C%0A%09ybar+interval%3D0.7%2C%0A%5D%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C408184%29+%282011%2C408348%29%0A%09%09+%282010%2C414870%29+%282009%2C412156%29%7D%3B%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C388950%29+%282011%2C393007%29+%0A%09%09%282010%2C398449%29+%282009%2C395972%29%7D%3B%0A%5Clegend%7BMen%2CWomen%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Barchartsexample.png](/files/afe38ac134ce38b716b6ac6a333ee893ec3d6585)

#### 코드 설명

그림은 ([앞서 설명한](#introduction)) 선언으로 시작합니다. `tikzpicture` 및 `axis` 환경들의 `axis` 선언에는 몇 가지 새로운 매개변수가 있습니다:

**x tick label style={/pgf/number format/1000 sep=}**

이 코드 조각은 플롯의 완전한 스타일을 정의합니다. 이 스타일을 사용하면 이 axis 환경 안에 여러 개의 \addplot 명령을 포함할 수 있으며, 추가 조정 없이도 서로 잘 맞고 보기 좋게 표시됩니다(ybar 매개변수는 이를 위해 필수입니다).

**enlargelimits=0.05.**

막대 그래프에서 범위를 늘리는 것은 이러한 종류의 그래프가 종종 막대 위에 추가 여백을 필요로 하여 더 보기 좋게 하거나 레이블을 추가하기 때문입니다. 여기서 0.05라는 수치는 플롯 전체 높이에 대한 상대값입니다.

**legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}**

역시 대부분의 경우 잘 작동합니다. 필요하다면 -0.2 값을 바꾸어 범례를 x축에 더 가깝게 또는 더 멀게 배치할 수 있습니다.

**ybar interval=0.7,**

각 막대의 두께입니다. 1은 막대 사이에 간격 없이 서로 붙어 있음을 의미하고, 0은 막대가 없고 수직선만 있음을 의미합니다.

다음 `coordinates` 이러한 종류의 플롯에서는 막대의 기준점과 높이를 결정합니다.

y축의 레이블은 최대 4자리까지 표시됩니다. 작업 중인 숫자가 9999보다 크면 `pgfplots` 예제와 동일한 표기법을 사용합니다.

## 3D 플롯

`pgfplots` 에는 플로팅 소프트웨어에서 기대할 수 있는 3D 플로팅 기능이 있습니다.

### 수학식 플로팅

이에 대한 간단한 예제는 [소개](#introduction)에 있으며, 조금 더 복잡한 내용을 살펴보겠습니다:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=mesh 매개변수를 사용하는 예제,
    축 숨기기,
    colormap/cool,
]
\addplot3[
    mesh,
    samples=50,
    domain=-8:8,
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{\(\frac{sin(r)}{r}\)}
\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf의 3D 예제.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+3D+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3DExample+using+the+mesh+parameter%2C%0A++++hide+axis%2C%0A++++colormap%2Fcool%2C%0A%5D%0A%5Caddplot3%5B%0A++++mesh%2C%0A++++samples%3D50%2C%0A++++domain%3D-8%3A8%2C%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Caddlegendentry%7B%5C%28%5Cfrac%7Bsin%28r%29%7D%7Br%7D%5C%29%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Pgfplots3dexample.png](/files/8051e134d4ff96a97bfe9321faf38572fde2227c)

#### 코드 설명

여기 있는 대부분의 명령은 이미 설명되었지만, 새로 추가된 것은 3가지입니다:

**축 숨기기**

axis 환경의 이 옵션은 이름 그대로이며, 축은 표시되지 않습니다.

**colormap/cool**

플롯에서 사용할 색상 구성표입니다. 더 많은 색상 구성표는 참조 가이드를 확인하세요.

**mesh**

이 옵션도 이름 그대로입니다. 소개 예제의 surf 매개변수도 함께 확인하세요.

**참고**: 삼각함수를 사용할 때 `pgfplots` 기본 단위는 도이며, 각도가 라디안인 경우(이 예제처럼) `deg` 함수를 사용하여 도로 변환해야 합니다.

### 등고선 플롯

In `pgfplots` 등고선 플롯을 그릴 수 있지만, 데이터는 외부 프로그램으로 미리 계산되어야 합니다. 예제를 살펴보겠습니다:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={등고선 플롯, 위에서 본 모습},
    view={0}{90}
]
\addplot3[
    contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf의 등고선 플롯 예제.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+contour+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5B%0A++++title%3D%7BContour+plot%2C+view+from+top%7D%2C%0A++++view%3D%7B0%7D%7B90%7D%0A%5D%0A%5Caddplot3%5B%0A++++contour+gnuplot%3D%7Blevels%3D%7B0.8%2C+0.4%2C+0.2%2C+-0.2%7D%7D%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Contourplotexample.png](/files/8b3cc003c49e195f14d9ec4a5947ede9bdc0cb8d)

#### 코드 설명

이것은 이전 섹션에서 사용한 동일한 방정식에 대한 몇 개의 등고선입니다. 의 값은 `제목` 매개변수에는 쉼표가 포함되어 있으므로 중괄호 안에 넣습니다. 이렇게 하면 다른 매개변수와의 혼동을 피하기 위해 그룹화 괄호를 사용합니다. `\begin{axis}` 선언. 새로운 명령은 두 가지입니다:

**view={0}{90}**

이것은 플롯의 시점을 변경합니다. 이 매개변수는 axis 환경에 전달되므로 다른 어떤 종류의 3D 플롯에도 사용할 수 있습니다. 첫 번째 값은 z축을 기준으로 한 회전이며, 도 단위입니다. 두 번째 값은 x축을 기준으로 시점을 회전합니다. 이 예제에서는 z축을 기준으로 0° 회전과 x축을 기준으로 90° 회전을 결합하여 위에서 본 플롯 시점을 얻게 됩니다.

**contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}**

이 코드 줄은 두 가지 일을 합니다. 첫째, 등고선을 계산하기 위해 외부 소프트웨어 gnuplot을 사용하도록 LaTeX에 지시합니다. 이는 Overleaf에서 잘 작동하지만, 로컬 LaTeX 설치에서 이 명령을 사용하려면 먼저 gnuplot을 설치해야 합니다(matlab도 작동하며, 그런 경우 명령에서 gnuplot 대신 matlab을 쓰면 됩니다). 둘째, 하위 매개변수 levels는 등고선이 계산될 높이 수준들의 값 목록입니다.

### 데이터로부터 표면 그리기

3D 표면에 데이터 집합을 그리려면 각 점의 좌표만 있으면 됩니다. 이 좌표들은 순서가 없는 집합일 수도 있고, 이 경우에는 행렬일 수도 있습니다:

```latex
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
coordinates {
(0,0,0) (0,1,0) (0,2,0)

(1,0,0) (1,1,0.6) (1,2,0.7)

(2,0,0) (2,1,0.7) (2,2,1.8)
};
\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf의 3D 표면 예제.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=plotting+a+surface+from+data+with+pgfplots\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D+%0Acoordinates+%7B%0A%280%2C0%2C0%29+%280%2C1%2C0%29+%280%2C2%2C0%29%0A%0A%281%2C0%2C0%29+%281%2C1%2C0.6%29+%281%2C2%2C0.7%29%0A%0A%282%2C0%2C0%29+%282%2C1%2C0.7%29+%282%2C2%2C1.8%29%0A%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![3dsurfacedata.png](/files/527b5f8f67fbc5e0db6f7f4e3c881d317ba1a140)

#### 데이터 설명

에 전달된 점들은 `coordinates` 매개변수는 각 행렬 행의 구분자로 빈 줄을 사용하여 3 × 3 행렬의 일부로 취급됩니다.

이 글의 3D 플롯에 대한 모든 옵션은 데이터 표면에도 적용됩니다.

### 매개변수화 플롯

매개변수화 플롯의 문법은 약간 다릅니다. 예제를 살펴보겠습니다:

```latex
\begin{tikzpicture}
\begin{axis}
    [
    view={60}{30},
    ]
\addplot3[
    domain=0:5*pi,
    samples = 60,
    samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
```

[이 예제를 `pgfplots` Overleaf의 매개변수화 플롯 예제.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+parametric+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A++++%5B%0A++++view%3D%7B60%7D%7B30%7D%2C%0A++++%5D%0A%5Caddplot3%5B%0A++++domain%3D0%3A5%2Api%2C%0A++++samples+%3D+60%2C%0A++++samples+y%3D0%2C%0A%5D%0A%28%7Bsin%28deg%28x%29%29%7D%2C%0A%7Bcos%28deg%28x%29%29%7D%2C%0A%7Bx%7D%29%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

이 코드의 출력은 아래 이미지에 표시됩니다. 링크를 열면 LaTeX 문서 프리앰블이 자동으로 추가됩니다:

![Parametricplot.png](/files/ad5a24d284cf1b4d954e07bc76a79c4b5b883036)

#### 코드 설명

이 예제에는 두 가지 새로운 점만 있습니다. 첫째, `samples y=0` 를 방지하기 위해 `pgfplots` 나선의 양 끝점이 서로 연결되지 않도록 하며, 둘째, 그릴 함수를 `addplot3` 환경에 전달하는 방식입니다. 각 매개변수 함수는 중괄호 안에 묶여 있고, 세 개의 매개변수는 괄호로 구분됩니다.

## 참조 안내서

| 명령/옵션/환경         | 설명                                                            | 가능한 값                                                                                                                                                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**         | 선형 스케일의 일반 플롯                                                 |                                                                                                                                                                                                                                                                                                           |
| **semilogxaxis** | x의 로그 스케일과 y의 일반 스케일                                          |                                                                                                                                                                                                                                                                                                           |
| **semilogyaxis** | y의 로그 스케일과 x의 일반 스케일                                          |                                                                                                                                                                                                                                                                                                           |
| **loglogaxis**   | x축과 y축 모두의 로그 스케일                                             |                                                                                                                                                                                                                                                                                                           |
| **axis lines**   | 축이 그려지는 방식을 변경합니다. 기본값은 '*박스*                                 | box, left, middle, center, right, none                                                                                                                                                                                                                                                                    |
| **legend pos**   | 범례 상자의 위치                                                     | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                          |
| **mark**         | 데이터 플로팅에 사용되는 표식의 유형입니다. 한 글자 문자를 사용하면 실제 표식과 매우 비슷한 모양이 됩니다. | \*, x , +, \|, o, asterisk, star, 10-pointed star, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes는 3d 플롯에서만 작동합니다). |
| **colormap**     | 플롯에서 사용할 색상 구성표로, 사용자 지정할 수 있지만 몇 가지 미리 정의된 색상 맵이 있습니다        | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                |

## 추가 읽을거리

자세한 내용은 다음을 참조하세요:

* [LaTeX에서 색상 사용](/latex/ko/formatting/13-using-colors-in-latex.md)
* [TikZ 패키지](/latex/ko/figures-and-tables/05-tikz-package.md)
* [pgfplots와 tikzpictures 외부화하기](/latex/ko/questions-and-answers/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [이미지 삽입](/latex/ko/more-topics/27-inserting-images.md)
* [표와 그림 목록](/latex/ko/figures-and-tables/03-lists-of-tables-and-figures.md)
* [이미지와 표 배치하기](/latex/ko/figures-and-tables/02-positioning-images-and-tables.md)
* [LaTeX에서 직접 다이어그램 그리기](/latex/ko/figures-and-tables/04-picture-environment.md)
* [다음 **pgfplots** 패키지 문서](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [TikZ 및 PGF 패키지: 버전 3.0.0용 매뉴얼](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [TeXample.net의 TikZ 및 PGF 예제](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ko/field-specific/08-pgfplots-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
