
Мне нужно построить график некоторых точек; просто простой список значений x и y, а затем соединить их отрезками линий. В настоящее время я строю график в Excel и импортирую изображение в Latex, и он выглядит не очень хорошо. Есть ли способ построить график координат, используя только Latex?
решение1
Точки данных можно вводить напрямую с помощью data
команды из datavisualization
библиотеки. То же самое применимо, если у вас есть функция вместо точек данных. Вот несколько примеров, адаптированных из TiкРуководство пользователя Z-PGF:
\documentclass[border=2mm,tikz]{standalone}
\usetikzlibrary{datavisualization}
\begin{document}
\begin{tikzpicture}
\datavisualization [school book axes, visualize as smooth line]
data {
x, y
-1.5, 2.25
-1, 1
-.5, .25
0, 0
.5, .25
1, 1
1.5, 2.25
};
\end{tikzpicture}
\end{document}
Изменение стиля осей, например, на научный, может придать другой вид:
\datavisualization [scientific axes, all axes={grid}, visualize as smooth line]
Кроме того, если у вас есть под рукой эта функция, это может быть довольно просто:
\documentclass[border=2mm,tikz]{standalone}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
\begin{tikzpicture}
\datavisualization [school book axes, visualize as smooth line]
data [format=function] {
var x : interval [-1.5:1.5] samples 7;
func y = \value x*\value x;
};
\end{tikzpicture}
\end{document}
с тем же результатом, что и ввод точек данных:
решение2
Вот пример использования pgfplots
. Данные также можно считать из csv
файла или вычислить с помощью формул.
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates {
(1, 1)
(2, 4)
(3, 9)
(4, 16)
(5, 25)
};
\end{axis}
\end{tikzpicture}
\end{document}
решение3
Вот небольшой пример, созданный с помощью , PSTricks
а не с помощью TikZ
. Все еще не понимаю, почему многие пользователи уже оставляют эту возможность строить графику с помощью PSTricks
.
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-plot}
\usepackage{pst-eucl}
\psset{algebraic,arrows=->}
\def\f{x^2}
\begin{document}
\begin{pspicture}(-5,-3)(5,5)
\psaxes[linewidth=.5pt,linecolor=darkgray](0,0)(-4,-1)(3,4)[$x$,0][$y$,90]
\psplot[linecolor=magenta]{-5}{5}{\f}
\pstGeonode[PosAngle=-30,PointNameSep=15pt,PointName={{\scriptstyle(0,.5)},{\scriptstyle(1,f(2))}}]
(0,0.5){F}(*1 {\f(x)}){A}
\end{pspicture}
\end{document}
решение4
Если вы немного знакомы с R, knitr — хороший вариант:
\documentclass{article}
\begin{document}
<<echo=F, fig.cap="One simple plot.", dev='tikz'>>=
df <- data.frame(x = c(1,2,3,4,5,6,7), y= c(1,2,4,8,16,32,64))
plot(df, pch=16, col="red")
lines(df$x,df$y, col="red", lwd=3)
@
\end{document}