1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
\documentclass[12pt]{pylatex}
\usepackage{examples}
\usepackage{caption}
\usepackage{pgfplots}
\begin{document}
\section*{Plotting Bessel functions}
\vspace{-5pt}
This simple example uses {\tt\small numpy, scipy} and {\tt\small Matplotlib} to produce a plot of the first six Bessel functions. Two plots are shown, one created by {\tt\small Matplotlib} and a second created by LaTeX using the plotting package {\tt\small pgfplots} and the data exported from {\tt\small Matplotlib}.
If you are using macOS, you may need to use the {\tt\small -Ppythonw} option when running {\tt\small pylatex.sh}. This is a known problem with macOS and {\tt\small Matplotlib}, see\ \url{https://matplotlib.org/faq/osx_framework.html}.
\vspace{-10pt}
\begin{minipage}[t]{0.60\textwidth}
\begin{python}
import numpy as np
import scipy.special as sp
import matplotlib.pyplot as plt
plt.matplotlib.rc('text', usetex = True)
plt.matplotlib.rc('grid', linestyle = 'dotted')
plt.matplotlib.rc('figure', figsize = (6.4,4.8)) # (width,height) inches
x = np.linspace(0, 15, 500)
for v in range(0, 6):
plt.plot(x, sp.jv(v, x))
plt.xlim((0, 15))
plt.ylim((-0.5, 1.1))
plt.legend(('${J}_0(x)$', '${J}_1(x)$', '${J}_2(x)$',
'${J}_3(x)$', '${J}_4(x)$', '${J}_5(x)$'), loc = 0)
plt.xlabel('$x$')
plt.ylabel('${J}_n(x)$')
plt.grid(True)
plt.tight_layout(0.5)
plt.savefig('example-04-fig.pdf')
# save the data for later use by pgfplots
np.savetxt('example-04.txt',list(zip(x,sp.jv(0,x),sp.jv(1,x),sp.jv(2,x),
sp.jv(3,x),sp.jv(4,x),sp.jv(5,x))),
fmt="% .10e")
\end{python}
\end{minipage}
\hskip 0.25cm
\begin{minipage}[t]{0.35\textwidth}
\begin{latex}
\begin{minipage}{\textwidth}
\centering
\IfFileExists{example-04-fig.pdf}%
{\includegraphics[width=6.4in]
{example-04-fig.pdf}}{Failed to create pdf plot.}
\captionof{figure}{The first six Bessel functions.}
\end{minipage}
\end{latex}
\end{minipage}
\begin{minipage}{\textwidth}
\centering
\IfFileExists{example-04-fig.pdf}%
{\includegraphics[width=6.4in]
{example-04-fig.pdf}}{Failed to create pdf plot.}
\captionof{figure}{The first six Bessel functions.}
\end{minipage}
\clearpage
\pgfplotsset{compat=newest}
\pgfplotsset{width=0.45\textwidth,height=0.34\textwidth}
\subsection*{Using pgfplots}
\begin{minipage}[t]{\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}
[xmin= 0.0, xmax=15.0,
ymin=-0.45, ymax=1.05,
xlabel=$x$, ylabel=$J_n(x)$,
grid=major, grid style={dashed,gray!30},
legend entries = {$J_0$, $J_1$, $J_2$, $J_3$, $J_4$, $J_5$}]
\addplot[blue] table [x index=0, y index=1]{example-04.txt};
\addplot[red] table [x index=0, y index=2]{example-04.txt};
\addplot[green] table [x index=0, y index=3]{example-04.txt};
\addplot[teal] table [x index=0, y index=4]{example-04.txt};
\addplot[orange] table [x index=0, y index=5]{example-04.txt};
\addplot[purple] table [x index=0, y index=6]{example-04.txt};
\end{axis}
\end{tikzpicture}
\captionof{figure}{The first six Bessel functions.}
\end{minipage}
\vfill
\begin{latex}
\begin{tikzpicture} % requires \usepackage{pgfplots}
\begin{axis}
[xmin= 0.0, xmax=15.0,
ymin=-0.45, ymax=1.05,
xlabel=$x$, ylabel=$J_n(x)$,
grid=major, grid style={dashed,gray!30},
legend entries = {$J_0$, $J_1$, $J_2$, $J_3$, $J_4$, $J_5$}]
\addplot[blue] table [x index=0, y index=1]{example-04.txt};
\addplot[red] table [x index=0, y index=2]{example-04.txt};
\addplot[green] table [x index=0, y index=3]{example-04.txt};
\addplot[teal] table [x index=0, y index=4]{example-04.txt};
\addplot[orange] table [x index=0, y index=5]{example-04.txt};
\addplot[purple] table [x index=0, y index=6]{example-04.txt};
\end{axis}
\end{tikzpicture}
\captionof{figure}{The first six Bessel functions.} % requires \usepackage{caption}
\end{latex}
\end{document}
|