레이블이 Tikz인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Tikz인 게시물을 표시합니다. 모든 게시물 표시

2019년 4월 11일 목요일

TikZ 00 : 기초 점, 선, 기본 도형 그리기

그림이나 그래프, 회로도 등을 그려야할 때 TikZ를 이용할 수 있습니다. 조금만 익숙해지면 아주 편리하게 깔끔한 그림을 그릴 수 있다는 점에 놀랄 것입니다. TikZ를 이용하기 위해서는 TikZ패키지를 사용합니다.
​

1. 점, 선 그리기
가장 간단한 그림을 그려봅니다.
\documentclass[]{article}
\usepackage{tikz}

\begin{document}
 \begin{tikzpicture}
  \filldraw[black] (0,0) circle (2pt);
  \draw[] (-1,2) -- (2,-4);
  \draw[red, thick] (-1,-1) -- (2,2);
  
 \end{tikzpicture}
\end{document}




TikZ를 사용하기 위해서는 TikZ패키지를 사용해야합니다. preamble(도큐먼트 시작 전)에 TikZ 패키지를 이용하기위해 \usepackage{tikz}를 사용합니다. TikZ로 그림을 그리기 위해서는 \\begin{tikzpicture} ~ \\end{tikzpicture} 사이에 tikz 명령어들을 입력하면 됩니다. 가장 간단한 점을 그리기 위해서 \filldraw를 사용했고, []괄호 안에는 속성이 들어갑니다. 그리고 (0,0)은 점을 찍은 좌표이고, 해당 좌표에 2pt 크기의 속이 찬(fill) 원 circle을 그립니다. 다음 행에서는 직선을 그렸습니다. 직선을 그리는 기본은 \draw[] (시작점 좌표) -- (끝점 좌표)입니다. 그래서 (-1, 2)에서 (2,-4)까지 오른쪽 아래로 내려가는 직선을 그리게 됩니다. 마지막으로 3번째 행에서는 굵고(tick), 빨간(red) 직선을 그렸습니다. 위에서부터 아래로 순서대로 점, 검은선, 빨간선을 그리게 되며 겹쳐지게 됩니다. 그래서 검은 점 위로 빨간 선이 지나는 것을 볼 수 있습니다. TikZ 명령어들을 사용할 때 가장 중요한 점은 모든 명령어 끝에 세미콜론(;)이 온다는 점입니다. 잊지마세요.

2. 곡선 그리기
이번에는 곡선을 그려봅니다.

\begin{tikzpicture}
 \draw (-2, 0) -- (2,0);
  
 \draw (-2,2) .. controls (0,0) .. (2,2);
 \filldraw[gray] (-2,2) circle (2pt);
 \filldraw[red] (0,0) circle (2pt);
 \filldraw[blue] (2,2) circle (2pt);
  
 \draw (-2,-2) .. controls (-1,-1) and (1,-1) .. (2,-2);
 \filldraw[green] (-1,-1) circle (2pt);
 \filldraw[yellow] (1,-1) circle (2pt);
\end{tikzpicture}


직선과 점에 대해서는 설명하지 않겠습니다. 곡선을 그리기 위해 시작점과 끝점 사이에 .. controls (좌표) .. 이용합니다. 아래 곡선 처럼 두 점을 기준으로 하면 곡선이 더 완만해집니다.


3. 기본 도형 그리기
\begin{tikzpicture}
 \draw (0, 0) circle (2);
 \filldraw[color=red!60, fill=red!10, very thick] (4,0) ellipse (2 and 1);
  
 \draw[blue] (-2,-2) rectangle (2,2);
 \draw[orange] (2,0) -- (6,0) -- (4,1) -- cycle;
\end{tikzpicture}




\draw는 속이 빈 테두리만 \filldraw는 속이 찬 도형을 그릴 수 있다는 점입니다. 두번째 줄에서는 좌표 (0,0)을 중심으로 반지름 길이가 2인 원을 그렸습니다. 위 예제에서는 \filldraw로 2pt 크기의 원을 그렸던 것과 비교해보면 됩니다. 그리고 세번째 줄에서는 타원을 그리는데 타원의 중심은 (4,0)이고, 가로 반경이 2, 세로 반경이 1인 타원입니다. 속성을 살펴보면 테두리 색은 빨간색 red의 60% 색이고, 채우는(fill) 색은 10%입니다. 그리고 테두리 굵기는 very thick으로 매우 굵은 테두리입니다. 다섯번째 줄에서는 (-2,-2)와 (2,2)를 양쪽 대각 모서리로 가지는 사각형 rectangle을 그렸습니다. 마지막으로 여섯번째 줄에서는 다각형을 그리는데 마지막에 -- cycle이 없다면 직선 두 개로 끝이 나지만, --cycle이 있으면 끝점 (4,1)과 시작점 (2,0)을 이어줘 닫힌 도형이 됩니다.

2019년 2월 18일 월요일

Tikz 06 : for loop 사용하기

좌표를 그릴 때 반복문을 사용한다면 조금 더 편리한 경우들이 있습니다. TeX도 기본적으로 Loop문을 지원합니다. 가장 많이 사용하는 for 문을 사용해 간단히 점을 찍어보겠습니다.

\documentclass[]{article}
\usepackage{tikz}

\begin{document}
 \pagenumbering{gobble}
 \begin{figure}
  \begin{tikzpicture}[scale=1]
   
   \draw [->] (-1,0) --  (5,0); %x
   \draw [->] (0,0)  -- (0,5); %y
   
   \foreach \i in {1,...,5}{    
    \node at (0.6*\i, 0.8*\i) {$\times$};
   }
   
  \end{tikzpicture}
 \end{figure}
\end{document}

\foreach 로 for문이 시작된다. 그리고 \i 가 변수이다.



2019년 1월 26일 토요일

LaTeX를 아시나요? 온라인 강좌. 당연 무료

이공계 사람들(?)이 많이 사용하는 LaTeX을 아시나요?
LaTeX이 뭐냐면? 나무 위키를 참고해주세요.


경기과학고 TeX사용자협회(latex.gs.hs.kr) 자료를 활용해 간단한 LaTeX 입문 강좌를 제작했습니다. 많은 학생들이 LaTeX과 친해질 수 있었으면 좋겠습니다. LaTeX을 처음 접하는 분들을 위한 강좌입니다. ^^ 강좌는 다음 내용으로 진행됩니다.
- LaTeX 설치하기
- TeX 친해지기
- 프리젠테이션용 Beamer 쓰기
- Tikz로 간단한 figure 그리기
- Mendeley와 연동해 레퍼런스 작성하기
​
처음 입문하는 사람들을 위한 기초 강좌를 만들어봤습니다. 계속 업데이트 중입니다. 다음 사이트에서 강좌를 수강할 수 있습니다. 회원 가입시 이메일 인증이 잘 안되면 리플달아주세요.






ㄴㅇㄹ
ㅇㄹㄴㅇㄹ


2018년 12월 8일 토요일

Tikz 05 : 단진자에 작용하는 힘 분해하기

다양한 방법이 있을 수 있지만 여기까지 그려봤습니다. 좌표를 계산할 때, 사칙연산 뿐만 아니라 sin, cos함수를 그대로 사용할 수 있습니다.
\documentclass[]{article}
\usepackage{tikz}

\usetikzlibrary{patterns}

\begin{document}
 \pagenumbering{gobble}
 \begin{figure}
  \begin{tikzpicture}[scale=1]
  
  \draw [pattern=north east lines ] (-2.5,0) rectangle (2.5,0.5);
  
   \draw [dashed] (0,0) --  (0,-5);
   
   \draw [thick] (0,0) -- (2*cos{60},-2*sin{60}) node[right]{$L$} --(4*cos{60},-4*sin{60});  
   
   \draw[] (0,-4.0) arc (-90:-60:4.0) ;
   
   \draw (0,-0.5) arc (-90:-60:0.5) node[below, xshift = -0.1cm ]{$\theta$};
   
   \filldraw (4*sin{30},-4*cos{30}) circle (5pt) node[right, xshift = +0.2cm  ]{$m$};
   
   \draw [ultra thick, ->, blue]   ((4*sin{30},-4*cos{30})  -- (4*sin{30},-4*cos{30} - 1.5) node[below]{$mg$};
   
   \draw (4*sin{30},-4*cos{30}-0.5) arc (-90:-60:0.5) node[below, xshift = -0.1cm ]{$\theta$};
   
   \draw [thick, ->, blue]   (4*sin{30},-4*cos{30})  -- (4*sin{30} + 1.5*cos{30}*sin{30}, -4*cos{30} -  1.5*cos{30}*cos{30}) node[right]{$mg \cos \theta$};
   \draw [thick, ->, blue]   (4*sin{30},-4*cos{30})  -- (4*sin{30} - 1.5*sin{30}*cos{30}, -4*cos{30} -  1.5*sin{30}*sin{30}) node[below, xshift = -0.3cm ]{$mg \sin \theta$};
   
   \draw [dashed, blue] (4*sin{30},-4*cos{30} - 1.5) -- (4*sin{30} + 1.5*cos{30}*sin{30}, -4*cos{30} -  1.5*cos{30}*cos{30});
   \draw [dashed, blue] (4*sin{30},-4*cos{30} - 1.5) -- (4*sin{30} - 1.5*sin{30}*cos{30}, -4*cos{30} -  1.5*sin{30}*sin{30});
  
  \draw [ultra thick, ->, blue]   (4*sin{30},-4*cos{30})  -- (4*sin{30} - 1.5*cos{30}*sin{30}, -4*cos{30} + 1.5*cos{30}*cos{30}) node[right,xshift = +0.1cm ]{$T$};
  
   
  \end{tikzpicture}
 \end{figure}
\end{document}


2018년 9월 8일 토요일

Tikz 04 : 패턴(pattern) 넣어 영역 표시하기

그래프를 그리다 보면 그래프 영역을 표시해야할 때가 있다. 그럴땐 패턴을 사용한다.


\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}
\pagenumbering{gobble}
\begin{figure}
 
 \begin{tikzpicture}[scale=1]
 
 \draw [thick,->] (-4,0) --  (4,0) node [anchor=north] {$x$};
 \draw [thick,->] (0,-1)  -- (0,6) node [anchor=east] {$y$};
 \node [below] at (-0.3,0) {$0$};
 
 \draw[pattern=north east lines,  dashed](-3,0)-- (-3,3.6) -- plot  [domain=-3:3, smooth,variable=\x] ({\x},{0.4*(\x)^2}) -- (3,0)  -- cycle;

 \draw[dashed] (-3,0) -- (-3,-0.2) node[below]{$-a$};
 \draw[dashed] (3,0) -- (3,-0.2) node[below]{$a$};
 
 \draw[domain=-3.5:3.5, smooth,thick,,variable=\x, blue] plot ({\x},{0.4*(\x)^2}) node[left]{$y=f(x)$};
 
 \end{tikzpicture}
 
\end{figure}

\end{document}



\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}
\pagenumbering{gobble}
\begin{figure}
 
 \begin{tikzpicture}[scale=1]
 
 \draw [thick,->] (-4,0) --  (4,0) node [anchor=north] {$x$};
 \draw [thick,->] (0,-4)  -- (0,4) node [anchor=east] {$y$};
 \node [below] at (-0.3,0) {$0$};
 
 \draw[pattern=north east lines,  dashed](-3,0)-- (-3,-3) -- plot  [domain=-3:0, smooth,variable=\x] ({\x},{\x})  -- cycle;
 
 \draw[pattern=north east lines,  dashed](0,0)-- (3,0) -- (3,3) -- cycle;

 \draw[dashed] (-3,0) -- (-3,0.2) node[above]{$-a$}; 
 \draw[dashed] (3,0) -- (3,-0.2) node[below]{$a$};
  
 \draw[domain=-3.5:3.5, smooth,thick,,variable=\x, blue] plot ({\x},{\x}) node[left]{$y=g(x)$};
 
 \end{tikzpicture}
 
\end{figure}

\end{document}





\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{patterns} %그래프 아래 영역을 표시학 위해서 필요합니다.
\usepackage[hangul]{kotex} %한글을 쓰려면 kotex
\begin{document}
 \pagenumbering{gobble}
 \begin{figure}
  
  \begin{tikzpicture}[scale=1]
  
  \draw [thick,->] (-1,0) --  (8,0) node [anchor=north] {$x$};
  \draw [thick,->] (0,-1)  -- (0,6) node [anchor=east] {$y$};
  
  \draw[pattern=north east lines,  dashed](0.5,0)-- (0.5,5.2375) -- plot  [domain=0.5:3.5, smooth,variable=\x] ({\x},{0.1*(\x+1)*(\x-2)*(\x-6)+4}) -- (3.5,0)  -- cycle;
 
  \draw[dashed] (5.5,0) --(5.5,2.8625);
  
  \draw[dashed] (0.5,0) -- (0.5,-0.2) node[below]{$a$};
  \draw[dashed] (3.5,0) -- (3.5,-0.2) node[below]{$t$}; 
  \draw[dashed] (5.5,0) -- (5.5,-0.2) node[below]{$b$};
 
  \draw[domain=-0.5:6.5, smooth,thick,,variable=\x, blue] plot ({\x},{0.1*(\x+1)*(\x-2)*(\x-6)+4}) node[left]{$y=f(x)$};
  
  \node [below] at (-0.3,0) {$0$};
  \node [above] at (2,1) {\large$\textrm{넓이 : }S(t)$};
  
  \end{tikzpicture}
  
 \end{figure}
\end{document}



2018년 9월 5일 수요일

Tikz 03 : circuitikz

Latex Tikz로 그래프를 열심히 그리다가 회로도를 그려야겠다는 생각에 검색해보니 역시 나온다. circuitikz!!

사용법은 Tikz와 거의 같다.

\documentclass[]{article}
\usepackage{circuitikz}

\begin{document}
\pagenumbering{gobble}
\begin{figure}
  
 \begin{circuitikz} 
  \draw (0,0) to[battery2] (0,4)
        to[ammeter] (4,4) 
        to[R](4,0) -- (0,0);
  \draw (4,3) -- (5.5,3)
      to[voltmeter] (5.5,1)
      -- (4,1);   
 \end{circuitikz}
 
\end{figure}
\end{document}

이렇게 하면

이렇게 깔끔하게 그려진다. 오호!!!

다음은 많이 사용하는 소자들을 정리해봤다.

Tikz 02 : 조금 더 복잡한 그래프 그리기

적분 내용을 정리할께 있어서 그려봤습니다. 설명이나 주석은 따로 달지 않겠습니다.

\documentclass[]{article}

%opening
\usepackage{tikz}

\begin{document}
\pagenumbering{gobble}
\begin{figure}
 
 \begin{tikzpicture}[scale=1]
 
 \draw [thick,->] (-1,0) --  (8,0) node [anchor=north] {$x$};
 \draw [thick,->] (0,-1)  -- (0,6) node [anchor=east] {$y$};
 
 \draw[dashed] (0.5,0)-- (0.5,5.2375) ;

 \draw[fill=red, dashed] (2.5,0) -- (3.5,0) -- (3.5,3.3875) -- (2.5,3.3875) -- cycle;

 \draw[dashed] (5.5,0) --(5.5,2.8625);
 
 \draw[dashed] (0.5,0) -- (0.5,-0.2) node[below]{$a$};
 \draw[dashed] (2.5,0) -- (2.5,-0.2) node[below]{$x$};
 \draw[dashed] (3.5,0) -- (3.5,-0.2) node[below]{$x+dx$};
 \draw[dashed] (5.5,0) -- (5.5,-0.2) node[below]{$b$};
 
    \draw [<->] (2.2,0)  -- (2.2,1.7) node [left] {$f(x_t)$}  -- (2.2,3.3875) ;
 \draw [<->] (2.5,1)  -- (3,1) node [below] {$dx$}  -- (3.5,1) ;
 
 \draw[domain=-0.5:6.5, smooth,thick,,variable=\x, blue] plot ({\x},{0.1*(\x+1)*(\x-2)*(\x-6)+4}) node[left]{$y=f(x)$};
 
 \node [below] at (-0.3,0) {$0$};
 
 \end{tikzpicture}
 
\end{figure}

\end{document}


\documentclass[]{article}

%opening
\usepackage{tikz}

\begin{document}
\pagenumbering{gobble}
\begin{figure}
 
 \begin{tikzpicture}[scale=1]
 
 \draw [thick,->] (-1,0) --  (8,0) node [anchor=north] {$x$};
 \draw [thick,->] (0,-1)  -- (0,6) node [anchor=east] {$y$};
 
 \draw[dashed] (0.5,0) -- (1,0) -- (1,5.25) -- (0.5,5.25) -- cycle;
 \draw[dashed] (1,0) -- (1.5,0) -- (1.5,5) -- (1,5) -- cycle;
 \draw[dashed] (1.5,0) -- (2,0) -- (2,4.5625) -- (1.5,4.5625);
 \draw[dashed] (2,0) -- (2.5,0) -- (2.5,4) -- (2,4);
 \draw[fill=red, dashed] (2.5,0) -- (3,0) -- (3,3.3875) -- (2.5,3.3875);
 \draw[dashed] (3,3.3875) -- (3.2,3.3875 );
 \draw[dashed] (5.0,0) -- (5.5,0) -- (5.5,2.2225) -- (5.0,2.2225) -- cycle;
 \draw[dashed] (5.5,2.2225) -- (5.5, 2.8625);
 
 \draw[dashed] (0.5,0) -- (0.5,-0.2) node[below]{$a$};
 \draw[dashed] (5.5,0) -- (5.5,-0.2) node[below]{$b$};
 
 \draw[dashed] (1,0) -- (1,-0.2) node[below]{$x_1$};
 \draw[dashed] (1.5,0) -- (1.5,-0.2) node[below]{$x_2$};
 \draw[dashed] (2,0) -- (2,-0.2) node[below]{$x_3$};
 \draw[dashed] (2.5,0) -- (2.5,-0.2) node[below]{$x_4$};
 \draw[dashed] (3,0) -- (3,-0.2) node[below]{$x_5$};
 
 \draw[dashed] (5.0,0) -- (5.0,-0.2) node[below]{$x_{n-1}$};

    \draw [<->] (3.3,0)  -- (3.3,1.7) node [right] {$f(x_k)$}  -- (3.3,3.3875) ;
 \draw [<->] (2.5,1)  -- (2.7,1) node [below] {$\Delta x$}  -- (3,1) ;
 
 \draw[domain=-0.5:6.5, smooth,thick,,variable=\x, blue] plot ({\x},{0.1*(\x+1)*(\x-2)*(\x-6)+4}) node[left]{$y=f(x)$};
 
 \node [below] at (-0.3,0) {$0$};
 \node [below] at (0.5,-0.58) {$=x_0$};
 
 \node [below] at (4,-0.2) {$...$};
 \node [below] at (4,1) {$...$};
 
 \end{tikzpicture}
 
\end{figure}

\end{document}




2018년 8월 31일 금요일

Tikz 01 : x, y축과 간단한 함수 그래프 그리기

Tikz를 사용하면 그림이나 그래프를 정확히(?) 그릴 수 있다. 파워포인트에서 그래프를 대충~ 그렸었다면 일차함수, 이차함수, 삼각함수 등 우리가 그리고 싶은 수식이 있다면 어떤 그래프든 그릴 수 있다.

그리고 그린 그래프는 심지어 벡터다. 우와!!

프로그램을 짤 때 "Hello"를 출력하기 위해 여러방법이 있듯, Tikz 역시 다양한 코드가 존재한다.
앞으로 내가 설명하는 코드가 최적의 코드라는 건 절대 아니다.
그냥 내가 아는 범위 내에서, 그리고 모르는 부분은 구글링하면서, 그래도 모르는 부분은 내 Latex 스승님^^ 에게 물어가면서 배운 것이다.
또 다른 코드가 존재한다면 언제든 리플로 알려주면 나도 적극적으로 반영하도록 노력(?)하겠다.

제일 먼저 $x$축과 $y$축을 그리고 간단한 이차함수 $x^2+1$ 그래프를 그려보자.
(그러기 위해서 컴퓨터에는 Latex이 설치되어 있어야 한다.)

준비가 모두 되었다면 다음 코드를 입력한다.
\documentclass[]{article}
\usepackage{tikz}

\begin{document}
 \pagenumbering{gobble}
 \begin{figure}
  \begin{tikzpicture}[scale=1]
  
   \draw [thick,->] (-2.5,0) --  (2.5,0) node [anchor=north] {$x$};
   \draw [thick,->] (0,-1)  -- (0,5) node [anchor=east] {$y$};
   
   \node [below] at (-0.3,0) {$0$};
   
   \draw[domain=-2:2, smooth,thick,,variable=\x, blue] plot ({\x},{\x*\x+0.5});
   
  \end{tikzpicture}
 \end{figure}
\end{document}

그리고 컴파일을 하게 되면 다음과 같은 그래프가 나타난다. 기본 article 사이즈에 그래프를 그렸기 때문에 여백을 잘라줘야 한다. 여백을 자르는 방법은 pdfcrop 명령을 사용한다.(http://woolmakes.blogspot.com/2018/08/tikz-pdf.html)
























코드에서 그래프를 그리는 부분은 \begin{tikzpicure} ~ \end{tikzpicture} 이다.
\draw는 선을 그린다.
\node로 "0"을 표시했다.

그리고 \pagenumbering{gobble} 은 tikzd와 딱히 상관이 없는 코드인데 페이지 넘버를 숨긴다. 페이지 넘버가 표시되어 있는 경우에 pdfcrop을 하게 되면 그래프 영역 뿐 아니라 페이지 넘버까지 함께 crop이 되기 때문이다.

좀 다른 그래프를 그려보자.
\documentclass[]{article}
\usepackage{tikz}

\begin{document}
 \pagenumbering{gobble}
 \begin{figure}
  \begin{tikzpicture}[scale=1]
  
   \draw [thick,->] (-2.5,0) --  (2.5,0) node [anchor=north] {$x$};
   \draw [thick,->] (0,-3)  -- (0,3) node [anchor=east] {$y$};
   
   \node [below] at (-0.3,0) {$0$};
   
   \draw[domain=-0.6:2, smooth,thick,,variable=\x, blue] plot ({\x},{1/ (\x + 1)});
   \draw[domain=-2.5:-1.4, smooth,thick,,variable=\x, blue] plot ({\x},{1/ (\x + 1)});
   
   
  \end{tikzpicture}
 \end{figure}

함수로 그래프를 그리는 경우에 발산하는 경우가 있다. 위 그래프가 그렇다. $x$가 -1으로 가면 -1보다 작은 경우에는 $-\infty$로 -1보다 큰 경우에는 $+\infty$로 발산한다. 그래서 latex 컴파일시 에러가 뜬다. 그래서 영역을 나눠서 두 개로 그렸다.