是否可以在 LaTex 中制作 X、Y、Z 散点图?

是否可以在 LaTex 中制作 X、Y、Z 散点图?

我需要绘制一个包含以下点的散点图:(1,1,0)、(-2,0,2) 和 (2,1,1),然后我需要绘制一个通过这三个点的平面。我对在 LaTex 中创建图表了解不多,所以我不知道从哪里开始。有人能帮我吗?

答案1

例如,使用 tikz-3plot 可以轻松完成这一切。(我并不是说这一定是最好的选择。如果你想绘制真实的 3D 对象,请使用渐近线。但是,这个问题很简单,可以用 tikz 来解决。)不幸的是,你没有指定平面有多大,更重要的是,视角应该是多少。为了说明这一点很重要,我展示了一个动画,其中我绘制了点,一种“最小”平面,并为一个角度制作动画。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{calc}
\begin{document}
\foreach \X in {0,10,...,350}
{\begin{tikzpicture}
\tdplotsetmaincoords{70}{\X}
\draw[clip] (-4,-4) rectangle (4,4);
\begin{scope}[tdplot_main_coords]
\path (1,1,0) coordinate (X1) (-2,0,2) coordinate (X2) (2,1,1) coordinate (X3);
\fill[gray!20] (X1) -- (X2) -- (X3) -- ($(X1)+(X3)-(X2)$) -- (X1);
\end{scope}
\foreach \X in {1,2,3}
{\shade[ball color=blue] (X\X) circle (2pt);}
\end{tikzpicture}}
\end{document}

在此处输入图片描述

当然,如果你提供更多意见,我会很乐意调整这一点。这是一个带轴的版本。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{calc}
\begin{document}
\foreach \X in {0,10,...,350}
{\begin{tikzpicture}
\tdplotsetmaincoords{70}{\X}
\draw[clip] (-4,-4) rectangle (4,4);
\begin{scope}[tdplot_main_coords]
\draw [-latex] (0,0,0) -- (1,0,0) node[pos=1.5]{$x$};
\draw [-latex] (0,0,0) -- (0,1,0) node[pos=1.5]{$y$};
\draw [-latex] (0,0,0) -- (0,0,1) node[pos=1.5]{$z$};
\path (1,1,0) coordinate (X1) (-2,0,2) coordinate (X2) (2,1,1) coordinate (X3);
\fill[gray,opacity=0.2] (X1) -- (X2) -- (X3) -- ($(X1)+(X3)-(X2)$) -- (X1);
\end{scope}
\foreach \X in {1,2,3}
{\shade[ball color=blue] (X\X) circle (2pt);}
\end{tikzpicture}}
\end{document}

在此处输入图片描述

附录:将其嵌入文章的一种方法。

\documentclass{article}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{calc}
% the following packages are not needed to draw the plane
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{cleveref}
\begin{document}

\lipsum[1]

\section{A plane}

A plane in three dimensions can be defined by three points which do not sit on
one line. In \cref{fig:Plane} we depict a plane that is defined by the points
\begin{equation}
 P_1=(1,1,0)\;,\quad P_2=(-2,0,2) \quad\text{and}\quad P_3=(2,1,1)\;.
\end{equation}

\begin{figure}[h]
\centering
 \begin{tikzpicture}
  \tdplotsetmaincoords{70}{110}
  \draw[clip] (-4,-4) rectangle (4,4);
  \begin{scope}[tdplot_main_coords]
   \draw [-latex] (0,0,0) -- (1,0,0) node[pos=1.5]{$x$};
   \draw [-latex] (0,0,0) -- (0,1,0) node[pos=1.5]{$y$};
   \draw [-latex] (0,0,0) -- (0,0,1) node[pos=1.5]{$z$};
   \path (1,1,0) coordinate (X1) (-2,0,2) coordinate (X2) (2,1,1) coordinate (X3);
   \fill[gray,opacity=0.2] (X1) -- (X2) -- (X3) -- ($(X1)+(X3)-(X2)$) -- (X1);
  \end{scope}
  \foreach \X in {1,2,3}
  {\shade[ball color=blue] (X\X) circle (2pt);}
 \end{tikzpicture}
\caption{A plane in three dimensions.} 
\label{fig:Plane} 
\end{figure}

\lipsum[2]

\end{document}

在此处输入图片描述

相关内容