KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
- TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
자유글 아름다운 사인 곡선
2015.06.23 21:57
예전에 워크숍 숙제를 사인 곡선을 열심히 그렸던 기억이 있습니다.
다양한 풀이가 제공되었지만 그 글의 원래 의도는 curve2e로 그리는 거였기 땜에, 다른 해법들이 좀 묻힌 감이 있어요.
그로부터 세월도 4-5년 지났고, 그 사이에 그림그리는 방법에도 변화가 있었을지 모르죠.
사인 곡선을 그려보겠습니다. 최종 파일이 tex이기만 하다면, 중간에 어떤 방법을 쓰든 괜찮습니다만, mathematica같이 자유롭게 이용할 수 없는 프로그램을 사용한 것은 제한합니다.
소스는 재현가능하고, 컴파일해서 결과를 얻어볼 수 있어야 합니다.
그릴 대상은 \(y=\sin(x)\)이면 되고, 특별한 장식을 요구하지 않겠습니다.
기존 해법을 부분 수정하는 것도 인정합니다.
(아무도 안 할 거 같은) gnuplottex 소스를 제가 만들어봤습니다.
% arara: xelatex: { shell: yes } \documentclass{standalone} \usepackage{gnuplottex} \begin{document} \begin{gnuplot} set zeroaxis set xtics(-2*pi, -pi, -pi/2, 0, pi/2, pi, 2*pi) plot [-5:5] sin(x) \end{gnuplot} \end{document}
shell-escape가 필요하므로 arara로 컴파일하시길 권합니다. gnuplot이 설치되어 있으면 그것으로 충분.
(이럴 때 arara 참 편리합니다.)
댓글 21
-
JangNa
2015.06.23 22:13
-
DohyunKim
2015.06.24 15:10
sind 함수 안쓰고도 그릴 수 있습니다.
\documentclass[margin=2pt]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
u := 50;
beginfig(0);
drawarrow (down -- up) scaled u;
drawarrow origin -- right scaled 370;
draw origin
for i=1 upto 360:
.. (i, u * ypart dir i)
endfor
withpen pencircle scaled 1.5;
endfig;
\end{mplibcode}
\end{document} -
DohyunKim
2015.06.25 01:42
쉬운 길 두고 돌아가기 제2탄.
u := 50;
path p; p = fullcircle scaled 2u;
t := length p / 360;
beginfig(0);
drawarrow (down -- up) scaled u;
drawarrow origin -- right scaled 370;
draw origin
for i=1 upto 360: .. (i, ypart point t*i of p) endfor
withpen pencircle scaled 1.5;
endfig; -
그로몹
2015.06.24 01:45
%!TEX TS-program = sage\documentclass{oblivoir}\usepackage{sagetex}\begin{document}\section*{Using SageTeX}\begin{center}\sageplot[width=.75\textwidth]{plot(sin(x), (x,0,2*pi))}\legend{This graphic is included using sagetex.sty.}\end{center}\end{document} -
DohyunKim
2015.06.24 09:42
문제에서 모양은 상관없다 했지만, sagetex 매뉴얼에 나와있듯이 x축 좌표계가 마음에 차지 않죠. 이렇게 바꾸면 좀 나아보이지 않을까요?
plot(sin(x), (x,0,2*pi), ticks=pi/2, tick_formatter=pi)
-
그로몹
2015.06.24 10:29
감사합니다.한결 보기 좋습니다.
다시 올립니다. (도배^^)
%!TEX TS-program = sage
\documentclass{oblivoir}
\usepackage{sagetex}
\begin{document}
\section*{Using SageTeX}
\begin{center}
\sageplot[width=.75\textwidth]{plot(sin(x), (x,0,2*pi), aspect_ratio=1, ticks=pi/2, tick_formatter=pi)}
\legend{Improved graphics thanks to Prof.\ D.\ H.\ Kim.}
\end{center}
\end{document}
그런데 TeXShop은 정말 편하게 되어 있군요. arara가 필요 없어 보입니다.
-
DohyunKim
2015.06.24 11:15
\documentclass[margin=2pt]{standalone}
\usepackage{pgfmath}
\def\sine{%
\pgfmathsin\x
\dimen0 \pgfmathresult pt
\multiply\dimen0 by 100 % \dimen0=100\dimen0
\dimen2 -\dimen0
\advance \dimen0 by 1pt
\vrule width 1pt height\dimen0 depth\dimen2
}
\newcount\x \x=0
\begin{document}
\loop
\sine
\ifnum\x<360 \advance\x by 1
\repeat
\end{document} -
nanim
2015.06.24 11:24
라텍 순수주의:
\documentclass{standalone} \usepackage{expl3} \usepackage{multido} \ExplSyntaxOn \cs_new:Npn \get_sin:n #1 { \fp_eval:n { sin ( #1 * 0.02 ) * 100 } } \cs_set_eq:NN \getsin \get_sin:n \ExplSyntaxOff \begin{document} \setlength{\unitlength}{1pt} \begin{picture}(600,350)(-50,-175) \put(0,0){\vector(1,0){500}} \put(0,-120){\vector(0,1){240}} \put(0,0){\circle*{1}} \multido{\i=0+1}{500}{\put(\i,\getsin{\i}){\circle*{1}}} \put(-10,0){$O$} \put(155,-10){$\pi$} \put(314,-10){$2\pi$} \end{picture} \end{document}
-
DohyunKim
2015.06.24 11:29
expl3를 쓴다면 multido 패키지는 없애도 되는 거 아닌감요? for 문이나 while 문이 있을 법 한데요.
-
nanim
2015.06.24 11:33
많습니다. ksforloop도 있고... 근데 그러면 for를 정의하거나 하는 게 ExplSyntax 안에 들어가야 하고... 이래저래 약간 길어지는 게 싫어서 그냥 multido로 했는데... multido 제외하고 expl3만으로 다음과 같이 해보았습니다.
\documentclass{standalone} \usepackage{expl3} \ExplSyntaxOn \cs_new:Npn \get_sin:n #1 { \fp_eval:n { sin ( #1 * 0.02 ) * 100 } } \cs_new:Npn \draw_func:n #1 { \int_zero:N \l_tmpa_int \int_do_while:nn { \l_tmpa_int <= #1 } { \int_incr:N \l_tmpa_int \put (\l_tmpa_int, \get_sin:n {\l_tmpa_int}) { \circle*{1} } } } \cs_set_eq:NN \drawfunc \draw_func:n \ExplSyntaxOff \begin{document} \setlength{\unitlength}{1pt} \begin{picture}(600,350)(-50,-175) \put(0,0){\vector(1,0){500}} \put(0,-120){\vector(0,1){240}} \put(0,0){\circle*{1}} \drawfunc{500} \put(-10,0){$O$} \put(155,-10){$\pi$} \put(314,-10){$2\pi$} \end{picture} \end{document}
-
nanim
2015.06.24 17:15
여기 있는 답변 예제를 장식 제외하고 핵심 부분만 추려서 다시 정리합니다.
pst-func (ischo)
\documentclass{standalone} \usepackage{pst-func} \begin{document} \begin{pspicture}(0,-2)(7.5,2) \psaxes[dx=\psPi,trigLabels=true]{->}(0,0)(0,-1.5)(7.5,2)[$\theta$,-90][~,180] \psplot[algebraic,plotpoints=500,linecolor=blue]{0}{\psPiTwo}{sin(x)} \end{pspicture} \end{document}
tikz (karnes)
\documentclass{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture}[domain=-4:4] %%% draw axis \draw[very thin,color=gray] (-4.1,-2.1) grid (4.1,2.1); \draw[->] (-4.2,0) -- (4.2,0) node[right] {$x$}; \draw[->] (0,-2.2) -- (0,2.2) node[right] {$f(x)$}; %%% draw sine \draw[color=blue] plot (\x,{sin(\x r)}) node[right] {$\sin x$}; \end{tikzpicture} \end{document}
pgfplots (DohyunKim)
각종 장식을 모두 빼고 함수 그리는 부분만 남겼습니다. 실제 코드가 어떤지는 위의 글타래를 참고하십시오.
\documentclass{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis} \addplot[domain=0:360]{sin(x)}; \end{axis} \end{tikzpicture} \end{document}
-
yihoze
2015.06.24 17:43
일러스트레이터로 이런 것 만들기가 얼마나 쉬운지 아시면 깜작 놀라실 걸요. ^^;
-
JangNa
2015.06.24 20:14
$\sin(x+\frac{\pi}{2})$
-
nanim
2015.06.24 17:59
\documentclass{standalone} \usepackage{asymptote} \begin{document} \begin{asy} import graph; size(200,0); real f(real x) { return sin(x); } pair F(real x) { return (x, f(x)); } xaxis("$x$"); yaxis("$y$",-1); draw(graph(f,0,6.5,operator ..),red); \end{asy} \end{document}
-
두텁
2015.06.25 13:00
% 소스
\documentclass{article}
\usepackage{graphicx}
\begin{document}
<<>>=
import pylab as plt
import numpy as np
x = np.linspace(0, 10)
s = np.sin(x)
plt.p*l*ot(x, s)
plt.show()
@
\end{document}
# 컴파일
$ Pweave -f tex sine.texw
$ xelatex -shell-escape sine.tex
* 소스에 금지어가 있어서 plt.p*l*ot(x, s)으로 표기했으니 실행하려면 *를 제거할 것.
* pweave와 matplotlib이 설치되어 있어야 함.
-
Progress
2015.06.25 14:11
Winplot을 이용해봅니다.
사인, 코사인 그래프를 그리고 이를 PicTeX 소스로 내보냅니다.
이렇게 얻은 소스 끝에다 \bye를 붙이고 플레인 TeX으로 컴파일하면 되는데, 여기서는 latex 컴파일하도록 조금 바꿨습니다.
\documentclass{standalone}
\usepackage{pictex} % > tlmgr install pictex in TL2015 scheme-small
% \input prepictex.tex
% \input postpictex.tex
\begin{document}
\beginpicture
\setcoordinatesystem units <0.77670cm,0.77670cm>
\put {\phantom{.}} at -1.72895 -4.84274
\put {\phantom{.}} at -1.72895 4.84277
\put {\phantom{.}} at 8.57105 -4.84274
\put {\phantom{.}} at 8.57105 4.84277
\setlinear
\setshadesymbol <z,z,z,z> ({\fiverm .})
% x axis begin
\putrule from -1.71865 0.00000 to 8.56075 0.00000
\arrow <0.080cm> [0.500,0.900] from 8.53145 0.00000 to 8.54610 0.00000
% x axis end
% x-ticks begin
\putrule from -1.00000 -0.07326 to -1.00000 0.07326
\putrule from 1.00000 -0.07326 to 1.00000 0.07326
\putrule from 2.00000 -0.07326 to 2.00000 0.07326
\putrule from 3.00000 -0.07326 to 3.00000 0.07326
\putrule from 4.00000 -0.07326 to 4.00000 0.07326
\putrule from 5.00000 -0.07326 to 5.00000 0.07326
\putrule from 6.00000 -0.07326 to 6.00000 0.07326
\putrule from 7.00000 -0.07326 to 7.00000 0.07326
\putrule from 8.00000 -0.07326 to 8.00000 0.07326
% x-ticks end
% y axis begin
\putrule from 0.00000 -4.83305 to 0.00000 4.83309
\arrow <0.080cm> [0.500,0.900] from 0.00000 4.80378 to 0.00000 4.81843
% y axis end
% y-ticks begin
\putrule from -0.07326 -4.00000 to 0.07326 -4.00000
\putrule from -0.07326 -3.00000 to 0.07326 -3.00000
\putrule from -0.07326 -2.00000 to 0.07326 -2.00000
\putrule from -0.07326 -1.00000 to 0.07326 -1.00000
\putrule from -0.07326 1.00000 to 0.07326 1.00000
\putrule from -0.07326 2.00000 to 0.07326 2.00000
\putrule from -0.07326 3.00000 to 0.07326 3.00000
\putrule from -0.07326 4.00000 to 0.07326 4.00000
% y-ticks end
\plot
-1.72895 -0.15749
-1.71434 -0.14305
-1.69973 -0.12857
(중략)
-1.02767 0.51681
-1.01306 0.52927
-0.99845 0.54161
-0.98384 0.55383
-0.00498 0.99999
(중략)
0.00963 0.99995
0.02424 0.99971
8.55644 0.76325
8.57105 0.75373
/
\put {$-1$} [t] at -1.09893 -0.13919
\put {$1$} [t] at 0.95228 -0.13919
\put {$2$} [t] at 1.96323 -0.13919
\put {$3$} [t] at 2.95953 -0.13919
\put {$4$} [t] at 3.95583 -0.13919
\put {$5$} [t] at 4.95213 -0.13919
\put {$6$} [t] at 5.96309 -0.13919
\put {$7$} [t] at 6.95939 -0.13919
\put {$8$} [t] at 7.95569 -0.13919
\put {$-4$} [r] at -0.33706 -3.87565
\put {$-3$} [r] at -0.33706 -2.87926
\put {$-2$} [r] at -0.33706 -1.88287
\put {$-1$} [r] at -0.33706 -0.88648
\put {$1$} [r] at -0.23450 1.12096
\put {$2$} [r] at -0.23450 2.11735
\put {$3$} [r] at -0.23450 3.11374
\put {$4$} [r] at -0.23450 4.11013
\put {$x$} [b] at 8.40989 0.31505
\put {$y$} [lt] at 0.13179 4.81347
\endpicture
\end{document}
-
JangNa
2015.06.25 14:35
지못미 pictex
-
nanim
2015.06.25 17:19
test.m
fplot (@sin, [0,6.5]);
print -dpdflatexstandalone testm.tex;
$ octave -q test.m$ pdflatex testm.tex주석 1. print -dpdf foo.pdf로 출력해서 includegraphics할 수도 있습니다.
주석 2. octave의 matlab은 서로 호환된다고 합니다.
-
nanim
2015.06.25 18:02
2015년 텍학회 학술대회에서 박재성 박사께 배운 Sweave
test.Rnw
\documentclass{standalone}
\begin{document}
<<fig=TRUE,echo=FALSE>>=
curve(sin, 0, 2*pi, xname = "t")
@
\end{document}
$ R CMD Sweave test.Rnw
$ pdflatex test.tex
-
ischo
2015.06.27 09:26
위 pstricks 코드에서 범위를 조금 넓히고...
%!TEX program = latex
\documentclass{oblivoir}
\usepackage{pst-plot} %% texdoc pst-plot
\begin{document}
\begin{pspicture}[yunit=1.4](-7,-1.5)(7,1.5)
\psaxes[dx=\psPiH,trigLabelBase=2,trigLabels]{->}(0,0)(-7,-1.5)(7,1.5)[$x$,0][$\sin(x)$,90]
\psplot[algebraic,linecolor=blue,plotpoints=500]{-\psPiTwo}{\psPiTwo}{sin(x)}
\end{pspicture}
\end{document}
-
ischo
2015.06.27 11:48
data파일이 있을 때 플롯하기%!TEX program = latex\begin{filecontents}{sine.data}0 0.000000001 0.017452402 0.03489949% data 생략 (첨부파일에 있음)358 -0.03489949359 -0.01745240360 -0.00000000\end{filecontents}\documentclass{oblivoir}\usepackage{pst-plot}\begin{document}\begin{pspicture}[yunit=1.33](0,0)(7,2)\psaxes[dx=\psPiH,trigLabelBase=2,trigLabels]{->}(0,0)(0,-1.2)(7,1.5)[$x$,0][$\sin(x)$,90]\readdata{\mydata}{sine.data}\dataplot[xunit=0.01745,linecolor=red]{\mydata}\end{pspicture}\end{document}
http://goo.gl/ug9HQI