3 个 pgfplots 图,全部在同一个 beamer 框架中

3 个 pgfplots 图,全部在同一个 beamer 框架中

我有一个投影仪框架,我想在其中包含一个由 3 个独立图组成的图形,如下所示:

3 个地块

请注意,每一个都有完全不同的轴domain unit vector ratio*所以,如果我没错的话,groupplot不适合这种情况。

我创建了以下.tikz文件:

% myPlot.tikz
\begin{tikzpicture}
\begin{axis}[domain=-5:5,unit vector ratio*=2 1]
\addplot {x};
\end{axis}
\begin{scope}[yshift=-7cm]
\begin{axis}[domain=-1:3,unit vector ratio*=1 2]
\addplot {-x};
\end{axis}
\end{scope}
\begin{scope}[yshift=-7cm,xshift=8cm]
\begin{axis}[domain=-2:10,y domain=0:4,unit vector ratio*=1 0.8]
\addplot {x*x};
\end{axis}
\end{scope}
\end{tikzpicture}

在我的投影机框架里

% main.tex
\documentclass[dvipsnames]{beamer}
\usepackage{tikz,pgfplots,graphicx,siunitx,tikzscale}
\pgfplotsset{compat=1.17}
\usepackage{geometry,xcolor}    
\geometry{paperwidth=148mm,paperheight=96mm}
\useoutertheme[width=20mm]{sidebar}
\usecolortheme{beaver}
\begin{document}
\begin{frame}{Algebra and Geometry}
\begin{figure}
\includegraphics[width=\textwidth,height=230pt]{myPlot.tikz}
\end{figure}
An additional line of text.
\end{frame}
\end{document}

但我收到一个错误

! Dimension too large.
<recently read> \pgfmath@x 

创建这种图形的正确方法是什么?

我确实遇到了困难,真的很想尽快解决这个问题。

期望输出是

在此处输入图片描述

(使用 Windows Paint 人工制作)

我也试过

\resizebox{\textwidth}{194pt}
{
\input{myPlot.tikz}
}

它稍微拉伸了一下数字:

不好

不用说,我正在研究的真实图形由 3 个复杂得多的环境组成axis,其中一个是,surf另一个是 3d 空间中的曲线。

我猜问题始于我定义的环境,它要求以厘米scope为单位指定的 anx和移位。y

我认为最好的办法是让 TeX 决定应该是什么xshiftyshift,并根据图形widthheight里面的来计算includegraphics

这就是我请求您帮助的地方。

更新:

我刚刚了解到一个人可以做到

% myPlot.tikz
\begin{tikzpicture}
\pgfplotsset{width=\textwidth,height=194pt}

\begin{axis}[domain=-5:5,unit vector ratio*=2 1]
% rest of file..
\end{tikzpicture}

但是我仍然 在和方向上shift进行了编辑,以厘米为单位的值,经过几次反复试验,直到我得到了满意的输出。begin{axis}xy

我想知道是否有更好的解决方案。

答案1

除了手动换档,您还可以name在第一个axis添加一个,然后使用第 4.19 节中描述的可用锚点放置其他两个轴即可对齐选项手册pgfplots(1.18.1 版手册第 374 页)。

-|符号是一种获取一个坐标的 x 位置和另一个坐标的 y 位置的方法,参见TikZ:箭头的 |- 符号到底起什么作用?

\documentclass[dvipsnames]{beamer}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepackage{geometry}    
\geometry{paperwidth=148mm,paperheight=96mm}
\useoutertheme[width=20mm]{sidebar}
\usecolortheme{beaver}
\begin{document}
\begin{frame}{Algebra and Geometry}

\begin{tikzpicture}
\begin{axis}[
  unit vector ratio*=2 1,
  width=0.5\linewidth,
  name=topaxis]
\addplot {x};
\end{axis}

\begin{axis}[
  domain=-1:3,unit vector ratio*=1 2,
  height=0.4\linewidth,
  at={(topaxis.south west |- topaxis.outer south west)},
  anchor=north west,
  ]
\addplot {-x};
\end{axis}

\begin{axis}[
  domain=-2:10,y domain=0:4,unit vector ratio*=1 0.8,
  height=0.4\linewidth,
  at={(topaxis.south east |- topaxis.outer south east)},
  anchor=north east]
\addplot {x*x};
\end{axis}

\end{tikzpicture}

An additional line of text.
\end{frame}
\end{document}

相关内容