PythonTex로 다이어그램을 생성하고 Grid 출력
5783 단어 파이썬PythontexmatplotlibTeX
개요
PythonTex를 사용하면 tex 문서에 파이썬 코드를 포함시킬 수 있습니다. 여기에서는 tex 문서중에서 그림의 작성과 그 표시·출력을 실시합니다.
특히 그림을 연속 출력하고 싶은 경우에 PythonTex가 그 실력을 발휘하기 때문에,
여러 그림을 만들고 그리드로 표시합니다.
이미지의 Grid 표시
이번에는 자동으로 출력한 그림을 grid로 표시하기 위해 minipage
환경을 이용합니다. PythonTex
를 사용하지 않고, 어리석게 쓰면 다음과 같은 코드입니다.
많은 그림을 출력 할 때 매우 귀찮습니다 ...
\begin{figure}[ht]
\begin{minipage}[ht]{0.48\textwidth}
\centering
\includegraphics[width= 6 cm]{sin.png}
\caption{sin curve}
\label{sin}
\end{minipage}
\hfill
\begin{minipage}[ht]{0.48\textwidth}
...
\end{minipage}
\end{figure}
실행 코드
특별한 것으로 pythontex
를 지정합니다.
PythonTex의 환경 구축은 이 기사 가 참고가 됩니다.
pycode
환경에 python
의 코드를 포함,\py{}
로 호출하여 tex 문서 중에 생성한 tex 코드를 출력시킵니다.
\documentclass{article}
\usepackage[dvipdfmx]{graphicx}
\usepackage{mediabb}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
import matplotlib.pyplot as plt
import numpy as np
## 図の作成
def draw_func(x, y, name):
plt.figure(figsize=(10, 7))
plt.plot(x, y)
plt.savefig('{}.png'.format(name))
def sin():
x = np.arange(-3, 3, 0.01)
y = np.sin(x)
draw_func(x, y, 'sin')
def cos():
x = np.arange(-3, 3, 0.01)
y = np.cos(x)
draw_func(x, y, 'cos')
def exp():
x = np.arange(-3, 3, 0.01)
y = np.exp(x)
draw_func(x, y, 'exp')
def square():
x = np.arange(-3, 3, 0.01)
y = np.square(x)
draw_func(x, y, 'square')
# ファイル名、caption, labelの指定
images = [ \
('sin.png', 'sin curve', 'sin'), \
('cos.png', 'cos curve', 'cos'), \
('exp.png', 'exp curve', 'exp'), \
('square.png', 'square curve', 'square'), \
]
def insert_grid_images(): # 2*N grid
# 図の生成
sin()
cos()
exp()
square()
# Gridで表示するためにfigure環境にminipageを作る
head = r"\begin{figure}[ht]"
# 反復部分
content = ""
for i in images:
tmp = r"\
\begin{minipage}[ht]{0.48\textwidth} \
\centering \
\includegraphics[width= 6 cm]{FILENAME} \
\caption{CAPTION} \
\label{LABEL} \
\end{minipage} \
\hfill"
property = {
"FILENAME" : i[0],
"CAPTION" : i[1],
"LABEL" : i[2],
}
# ファイル名、caption, labelを置換
for key, value in property.items():
tmp = tmp.replace(key, value)
content += tmp
foot = r"\end{figure}"
# 生成した文字列を返す
return head+content+foot
\end{pycode}
sin curve(Figure \ref{sin}), % 引用も可能
cos curve(Figure \ref{cos}),
exp curve(Figure \ref{exp}),
square curve(Figure \ref{square})
% ここでinsert_grid_images()を実行し、texのコードを出力する
\py{insert_grid_images()}
\end{document}
완성도
생성 된 다이어그램이 올바르게 grid로 표시됩니다. tex 본문에서의 인용도 잘되고 있습니다.
참고
Tex Wiki PythonTex
TECH ACADEMY Python에서 여러 위치의 문자열을 바꾸는 방법
자원
이 리포지토리에는 실행 코드가 있습니다.
Reference
이 문제에 관하여(PythonTex로 다이어그램을 생성하고 Grid 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto_ohno/items/bca68e2e3c3bcd01a53c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 자동으로 출력한 그림을 grid로 표시하기 위해
minipage
환경을 이용합니다. PythonTex
를 사용하지 않고, 어리석게 쓰면 다음과 같은 코드입니다.많은 그림을 출력 할 때 매우 귀찮습니다 ...
\begin{figure}[ht]
\begin{minipage}[ht]{0.48\textwidth}
\centering
\includegraphics[width= 6 cm]{sin.png}
\caption{sin curve}
\label{sin}
\end{minipage}
\hfill
\begin{minipage}[ht]{0.48\textwidth}
...
\end{minipage}
\end{figure}
실행 코드
특별한 것으로 pythontex
를 지정합니다.
PythonTex의 환경 구축은 이 기사 가 참고가 됩니다.
pycode
환경에 python
의 코드를 포함,\py{}
로 호출하여 tex 문서 중에 생성한 tex 코드를 출력시킵니다.
\documentclass{article}
\usepackage[dvipdfmx]{graphicx}
\usepackage{mediabb}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
import matplotlib.pyplot as plt
import numpy as np
## 図の作成
def draw_func(x, y, name):
plt.figure(figsize=(10, 7))
plt.plot(x, y)
plt.savefig('{}.png'.format(name))
def sin():
x = np.arange(-3, 3, 0.01)
y = np.sin(x)
draw_func(x, y, 'sin')
def cos():
x = np.arange(-3, 3, 0.01)
y = np.cos(x)
draw_func(x, y, 'cos')
def exp():
x = np.arange(-3, 3, 0.01)
y = np.exp(x)
draw_func(x, y, 'exp')
def square():
x = np.arange(-3, 3, 0.01)
y = np.square(x)
draw_func(x, y, 'square')
# ファイル名、caption, labelの指定
images = [ \
('sin.png', 'sin curve', 'sin'), \
('cos.png', 'cos curve', 'cos'), \
('exp.png', 'exp curve', 'exp'), \
('square.png', 'square curve', 'square'), \
]
def insert_grid_images(): # 2*N grid
# 図の生成
sin()
cos()
exp()
square()
# Gridで表示するためにfigure環境にminipageを作る
head = r"\begin{figure}[ht]"
# 反復部分
content = ""
for i in images:
tmp = r"\
\begin{minipage}[ht]{0.48\textwidth} \
\centering \
\includegraphics[width= 6 cm]{FILENAME} \
\caption{CAPTION} \
\label{LABEL} \
\end{minipage} \
\hfill"
property = {
"FILENAME" : i[0],
"CAPTION" : i[1],
"LABEL" : i[2],
}
# ファイル名、caption, labelを置換
for key, value in property.items():
tmp = tmp.replace(key, value)
content += tmp
foot = r"\end{figure}"
# 生成した文字列を返す
return head+content+foot
\end{pycode}
sin curve(Figure \ref{sin}), % 引用も可能
cos curve(Figure \ref{cos}),
exp curve(Figure \ref{exp}),
square curve(Figure \ref{square})
% ここでinsert_grid_images()を実行し、texのコードを出力する
\py{insert_grid_images()}
\end{document}
완성도
생성 된 다이어그램이 올바르게 grid로 표시됩니다. tex 본문에서의 인용도 잘되고 있습니다.
참고
Tex Wiki PythonTex
TECH ACADEMY Python에서 여러 위치의 문자열을 바꾸는 방법
자원
이 리포지토리에는 실행 코드가 있습니다.
Reference
이 문제에 관하여(PythonTex로 다이어그램을 생성하고 Grid 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto_ohno/items/bca68e2e3c3bcd01a53c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\documentclass{article}
\usepackage[dvipdfmx]{graphicx}
\usepackage{mediabb}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
import matplotlib.pyplot as plt
import numpy as np
## 図の作成
def draw_func(x, y, name):
plt.figure(figsize=(10, 7))
plt.plot(x, y)
plt.savefig('{}.png'.format(name))
def sin():
x = np.arange(-3, 3, 0.01)
y = np.sin(x)
draw_func(x, y, 'sin')
def cos():
x = np.arange(-3, 3, 0.01)
y = np.cos(x)
draw_func(x, y, 'cos')
def exp():
x = np.arange(-3, 3, 0.01)
y = np.exp(x)
draw_func(x, y, 'exp')
def square():
x = np.arange(-3, 3, 0.01)
y = np.square(x)
draw_func(x, y, 'square')
# ファイル名、caption, labelの指定
images = [ \
('sin.png', 'sin curve', 'sin'), \
('cos.png', 'cos curve', 'cos'), \
('exp.png', 'exp curve', 'exp'), \
('square.png', 'square curve', 'square'), \
]
def insert_grid_images(): # 2*N grid
# 図の生成
sin()
cos()
exp()
square()
# Gridで表示するためにfigure環境にminipageを作る
head = r"\begin{figure}[ht]"
# 反復部分
content = ""
for i in images:
tmp = r"\
\begin{minipage}[ht]{0.48\textwidth} \
\centering \
\includegraphics[width= 6 cm]{FILENAME} \
\caption{CAPTION} \
\label{LABEL} \
\end{minipage} \
\hfill"
property = {
"FILENAME" : i[0],
"CAPTION" : i[1],
"LABEL" : i[2],
}
# ファイル名、caption, labelを置換
for key, value in property.items():
tmp = tmp.replace(key, value)
content += tmp
foot = r"\end{figure}"
# 生成した文字列を返す
return head+content+foot
\end{pycode}
sin curve(Figure \ref{sin}), % 引用も可能
cos curve(Figure \ref{cos}),
exp curve(Figure \ref{exp}),
square curve(Figure \ref{square})
% ここでinsert_grid_images()を実行し、texのコードを出力する
\py{insert_grid_images()}
\end{document}
생성 된 다이어그램이 올바르게 grid로 표시됩니다. tex 본문에서의 인용도 잘되고 있습니다.
참고
Tex Wiki PythonTex
TECH ACADEMY Python에서 여러 위치의 문자열을 바꾸는 방법
자원
이 리포지토리에는 실행 코드가 있습니다.
Reference
이 문제에 관하여(PythonTex로 다이어그램을 생성하고 Grid 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto_ohno/items/bca68e2e3c3bcd01a53c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 리포지토리에는 실행 코드가 있습니다.
Reference
이 문제에 관하여(PythonTex로 다이어그램을 생성하고 Grid 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuto_ohno/items/bca68e2e3c3bcd01a53c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)