Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
보통 수식그래프를 어떤식으로 그리시나요?
2014.08.28 11:00
안녕하세요. 그림을 그리는 방법에 대해서 요즘 알아보는 중인데요, 지오지브라가 있는 것은 알지만,
어느정도 선에서 커버가 되는 지까지 감이 오지 않아서 그나마 학교에서 배운 매스매티카를 사용하고자 합니다.
알아보니 pgfplot 패키지에다가 point 데이터를 많이 집어넣으면, tikz을 이용해서 그림을 이쁘게 그려주더라고요.
사용했던 코드는 아래와 같습니다.
[Mathematica]
여기서 output.dat를 조금의 가공을 거칩니다.
그리고
[TeX 코드]
[매스매티카자체의 그림과 TikZ으로 그린 것]
우선 변수가 일변수일 때까지는 쉽게 모든 함수를 그릴 수 있다는 자신감이 생겼습니다.
문제는 2변수부터인데요, 만약에 식이 아래와 같은 식이라면 pgfplots에서 쉽게 계산할 수 있다는 사실을 알았습니다.
계산 알고리즘이 어떻게 되는지는 모르겠지만, 신기하게도 그리더군요.
제 질문은 여기서부터인데요,
만약에 3D공간에서 저렇게 두개의 변수로 확실하게 컨트롤되는 경우라면 쉽지만, 쉽게 예를 들어서
F(x,y,z)=x^2+y^2+z^2-1
와 같이 정의된 것에서, F(x,y,z)=0을 만족하는 (x,y,z)의 쌍들을 모으고, 그것을 바탕으로 그림을 그려라.
이런 것을 수행할때는 매스매티카야 ContourPlot3D를 이용해서 매스매티카 내부에서 그림을 그릴 수 있지만, 저 해의 솔루션들을 Mathematica에서 밖으로 내보내는 방법을 찾지도 못하겠습니다. (제 얘기는 점 데이터들, 엑셀데이터로)
보통은 이런 그림을 그릴때는 고수님들은 어떻게 하시는지 궁금합니다.
(물론 일러를 쓰면 속이 편한 문제긴 합니다만...)
댓글 6
-
nanim
2014.08.28 21:33
-
그로몹
2022.07.25 22:27
오래 전에 이 질문이 궁금했었나봅니다. 어쩌다 다시 보게 돼서 검색해 보니 Mathematica의 그림에서 point data를 다음 링크에서와 같이 뽑아낼 수 있네요.
https://mathematica.stackexchange.com/questions/197388/generate-a-table-of-data-points-from-a-surface-in-3d
예를 들어 구면에서 이 방법으로 뽑은 csv 파일을 첨부합니다.
이런 데이터로 TikZ 등이 어떤 그림을 그려 줄 수 있을까요?
-
noname
2022.07.26 03:12
%!TEX program = lualatex \documentclass{standalone} \usepackage{pgfplots} \pgfplotsset{compat=newest} \begin{document} \begin{tikzpicture} \begin{axis} \addplot3 [surf] table {./sphere.csv}; \end{axis} \end{tikzpicture} \end{document}
- csv 파일의 컬럼 분리자 콤마(,)를 TAB(\t)으로 바꿉니다.
- 다른 엔진에서는 메모리 부족으로 인한 tex capacity exceeded가 나올 수 있으므로 lualatex으로 컴파일합니다.
-
Progress
2022.07.26 11:10
잘 됩니다.
근데 이게 뭐하는 건가요? 그려놓고도 뭔지 모르니 원...
-
그로몹
2023.02.23 11:20
아 그림 그려주신 것 보고 나서 한참 됐네요. 원래 이 데이터를 뽑은 것은 다음처럼 생긴 mathematica notebook에서입니다. 누구나 볼 수 있게 pdf로 저장했습니다.
공간의 단위 구면인데 점의 좌표만 데이터로 뽑는 방법을 찾았습니다. (이거 어떻게 찾았는지 기억이... 매뉴얼도 아니고 구글링해서 찾기 쉽지 않았을 듯합니다만...) Mathematica는 3차원 그래픽 데이터를 GraphicsComplex라는 형식으로 저장하는데 그 맨 첫번째 argument가 점 데이터(vertex data)인가봅니다.
어쨌든 이 데이터는 구면이고요. TiKz가 그려준 것은 이 데이터에 뭔가를 해서 점들이 어떤 순서로 연결된 것은 아닌지 그냥 얼핏 보기에는 잘 파악이 안됩니다. 뭔지 모르게 그린 것이 맞아요.
3차원 방향의 ratio를 같게 맞추는 방법이 있을 듯합니다. Mathematica도 default로 황금비를 사용하기때문에 제대로 보려면 (3차원에서는) BoxRatio를 지정해야 합니다. (2차원에서는 AspectRatio인 듯.) 그러니까 타원면이 아니라 구면입니다.
-
그로몹
2023.02.23 11:25
추가로 말씀드리면
geogebra에서 TikZ 형식으로 코드를 만들 수 있는데 이것은 2차원 그래픽만 됩니다. 3차원은 아직 먼 것 같아요. 그래서 사람들이 3차원 그래픽을 그린 다음 그 데이터에서 몇 개의 점을 뽑고 이것을 원하는 방향으로 정사영해서 이 뽑힌 점을 기반으로 다시 2차원 그래픽을 그려서 TikZ로 뽑아내는 방법을 연구하고 있었어요. 이것도 꽤 괜찮은 방법인 듯합니다. 이미 10년 가까이 지난 질문이라 때늦은 댓글이고, 이 새로운 정보는 10년 전에는 없었는데 근래에 논문(?) 등으로 나오는 듯합니다.
질문의 취지를 명확하게 이해하지 못해서 쉽게 답변이 달릴 거 같지 않네요.
문제를 몇 가지 부류로 분류해보고자 합니다.
1. Mathematica에서 implicit function의 3d plotting에 대한 것이라면, 이 게시판에서 논의할 사항은 아니고 Mathematica를 능숙하게 다루시니까 내부에서 플로팅하는 것은 문제 없다는 것으로 이해하겠습니다. 그러면, 일단 그것을 csv로 내보내기할 수는 있지 않은가요? 샘플로 csv 파일을 첨부하시면 그것으로 pgfplot하는 방법은 어떻게든 토론이 가능하리라 봅니다.
2. pgfplot manual에 보면 matlab에서 pgfplot으로 변환하는 방법에 대한 언급이 있습니다. octave가 matlab언어와 매우 유사하니까 그쪽의 m 파일을 변환하는 방법을 생각해보는 방법도 있겠네요. print함수의 -dtikz 옵션으로 tikz 그림으로 내보내면 어찌되는지 궁금한데 해보지는 못했습니다.
3. (매우 불만족스럽지만) 아무튼간에 geogebra 5.0beta가 3d plotting을 pstricks로 export할 수 있는 것으로 압니다. tikz나 asymptote 내보내기는 이상한 부분이 아직은 많다고 들었습니다.
4. 라텍 관련 (3d) 함수 플로팅 툴 자체에 대한 논의라면 현재 각광받는 것은 전통의 pstricks (pst-3dplot), pgfplot, 그리고 tikz와 asymptote가 있다고 생각합니다. 어느 것이든 장단점이 있는 거 같고요.