我尝试在 tikz 的 axis 环境中使用简单函数 f(x) = x/(x-1) 绘制一条双曲线。但是,当程序绘制该函数时,它会绘制一条直线,其中函数未定义,即 x=1。
我尝试通过添加第二个图并限制域来修复它,但即使它可以工作,乳胶也会出现以下错误:“尺寸太大”
有没有合适的方法可以删除它?下面是代码和结果(对于我的修改,只需取消注释 addplot 上方的行并限制域)。
韩国
\documentclass[usenames,dvipsnames]{beamer}
%\usetheme{CambridgeUS}
\definecolor{Red}{RGB}{176,23,31}
%% Useful packages
\usepackage{lipsum,graphicx,subcaption}
\usepackage{float}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{bm}
\usepackage{mathrsfs}
\usepackage{amsfonts}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{fit, calc, matrix, positioning, arrows.meta, intersections, through, backgrounds, patterns}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{overwrite option/.style args={#1 with #2}{#1=#2,#1/.code=}}
\pgfplotsset{
vasymptote/.style={before end axis/.append code={\draw[dashed,<->,-{Latex}] ({rel axis cs:0,0} -| {axis cs:#1,0}) -- ({rel axis cs:0,1} -| {axis cs:#1,0}); }},
myaxis/.style={axis line style={<->, {Latex}-{Latex}}}
} % This fancy shit sets the arrows to both parts of the axis in
\begin{document}
\begin{frame}{FUNCTIONS}
\framesubtitle{BASICS}
\textbf{Domain}: the set of numbers (inputs) for which the function has defined outputs.
\textbf{Example:}
\vspace{-20pt
}
\begin{columns}
\column{.4\textwidth}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
width=6cm,
xscale = 1, yscale = 1,
axis lines = middle,
myaxis,
grid,
grid style={densely dashed},
xmin = -5.5, xmax = 5.5, ymin = -5.5, ymax = 5.5,
every axis/.append style={font=\tiny},
xlabel = {$x$}, xlabel style={at=(current axis.right of origin), anchor=west},
ylabel = $y$, ylabel style={at=(current axis.above origin), anchor=east},
xtick = {-4,-2,0,2,4},
% xticklables = {-2,0,2,4,6},
ytick = {-4,-2,0,2,4},
% yticklables = {-2,0,2,4,6},
samples=100,
domain=-5.5:5.5,
axis equal,
% no markers
]
\addplot[domain=-5:5, thick, RoyalBlue, name path = rb]{ln(x)} node[above, rotate = 0] at (2,2) {$f(x) = ln(x)$} ;
\end{axis}
\end{tikzpicture}
\caption*{$Dom\left(f(x)\right) = \left\{ \forall x\in \mathbb{R} | x>0\right\}$}
% \label{fig:my_label}
\end{figure}
\column{.4\textwidth}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
width=6cm,
xscale = 1, yscale = 1,
axis lines = middle,
myaxis,
grid,
grid style={densely dashed},
xmin = -5.5, xmax = 5.5, ymin = -5.5, ymax = 5.5,
every axis/.append style={font=\tiny},
xlabel = {$x$}, xlabel style={at=(current axis.right of origin), anchor=west},
ylabel = $y$, ylabel style={at=(current axis.above origin), anchor=east},
xtick = {-4,-2,0,2,4},
% xticklables = {-2,0,2,4,6},
ytick = {-4,-2,0,2,4},
% yticklables = {-2,0,2,4,6},
samples=100,
domain=-5.5:5.5,
axis equal,
% no markers
]
% \addplot[domain=-5:1, thick, YellowOrange, name path = rb]{x/(x-1)} ;
\addplot[domain=-6:6, thick, YellowOrange, name path = rb]{x/(x-1)} node[above, rotate = 0] at (3,3) {$g(x) = \frac{x}{x-1}$} ;
\end{axis}
\end{tikzpicture}
\caption*{$Dom\left(g(x)\right) = \left\{ \forall x\in \mathbb{R} | x\in \mathbb{R}\backslash x=1 \right\}$}
% \label{fig:my_label}
\end{figure}
\end{columns}
\end{frame}
\end{document}
答案1
@NFTaussig 在他的评论中提到,从右图的域中,您需要排除 1 附近的点。
由于两个图像具有相同的选项,因此将它们合并并放置在框架的列之前axis
是合理的:pgfplotset
\documentclass[usenames,dvipsnames]{beamer}
%\usetheme{CambridgeUS}
\setbeamerfont{caption}{size=\footnotesize}
\definecolor{Red}{RGB}{176,23,31}
%% Useful packages
\usepackage{lipsum,graphicx,subcaption}
%\usepackage{float}% have not sense in beamer presentations
\usepackage{mathrsfs}
\usepackage{mathtools, amssymb} % mathtools load amsmath, amssymb load amsfonts
\usepackage{bm}
\usepackage{pgfplots} % it loads tikz too
\pgfplotsset{compat = 1.17}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{arrows.meta,
backgrounds,
calc,
decorations.pathreplacing,
fit,
intersections,
matrix,
patterns, positioning,
through}
\begin{document}
\begin{frame}{FUNCTIONS}
\framesubtitle{BASICS}
\textbf{Domain}: the set of numbers (inputs) for which the function has defined outputs.
\textbf{Example:}
%\vspace{-20pt}
\pgfplotsset{
width=6cm,
axis lines = middle,
grid,
grid style={densely dashed},
xmin = -5.5, xmax = 5.5, ymin = -5.5, ymax = 5.5,
every axis/.append style={font=\tiny},
xlabel = {$x$}, xlabel style={anchor=west},
ylabel = $y$, ylabel style={anchor=east},
xtick = {-4,-2,0,2,4},
ytick = {-4,-2,0,2,4},
samples=100,
axis equal,
}
\begin{columns}
\column{.45\textwidth}
\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=-5:5, thick, RoyalBlue] {ln(x)} node[above left] {$f(x) = ln(x)$} ;
\end{axis}
\end{tikzpicture}
\caption*{$\mathrm{Dom}\left(f(x)\right) = \left\{ \forall x\in \mathbb{R}\mid x>0\right\}$}
\end{figure}
%
\column{.52\textwidth}
\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=-5:0.9, thick, YellowOrange]{x/(x-1)} ;
\addplot[domain= 1.01:6, thick, YellowOrange]{x/(x-1)} node[xshift=1em,above left] {$g(x) = \frac{x}{x-1}$} ;
\end{axis}
\end{tikzpicture}
\caption*{$\mathrm{Dom}\left(g(x)\right) = \left\{\forall x\in \mathbb{R}\mid x\in \mathbb{R}\neg{x}=1 \right\}$}
\end{figure}
\end{columns}
\end{frame}
\end{document}