我正在尝试创建与所附图片类似的图片。我遇到了困难,因为我试图猜测并检查如何制作垂直椭圆。我附上了我的代码。我想知道是否有更简单的方法来生成上述示例或一般体积。
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=newest}
\usepackage{amssymb}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{plotmarks}
\usetikzlibrary{arrows}
\usetikzlibrary{shapes.misc, positioning}
\usetikzlibrary{arrows,shapes,positioning}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta,bending}
\tikzset{font=\footnotesize}
\begin{document}
\begin{tikzpicture}
\begin{axis}[thick,ticks=none,
scale only axis,
axis lines=middle,
inner axis line style={-Triangle},
ymin=-5,
ymax=5,
xmin=-1,
xmax=3,
]
\addplot[name path=f,thick, red,samples=1000,domain=0:2]{x^2+1};
\addplot[name path=g,thick,blue, samples=1000,domain=0:2]{-x^2-1};
\end{axis}
\draw[thick,dashed] (8,4) arc
[
start angle=0,
end angle=360,
x radius=1cm,
y radius =4cm
] ;
\draw[thick,dashed] (5,3.5) arc
[
start angle=0,
end angle=360,
x radius=.5cm,
y radius =1.75cm
] ;
\end{tikzpicture}
\end{document}
感谢您的时间
缺口
答案1
为了使绘图更容易一些,您可以在轴的坐标系中添加椭圆。这样您就不必猜测椭圆中心的 y 坐标,因为您知道它位于 0:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=newest}
\usepackage{amssymb}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{plotmarks}
\usetikzlibrary{arrows}
\usetikzlibrary{shapes.misc, positioning}
\usetikzlibrary{arrows,shapes,positioning}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta,bending}
\tikzset{font=\footnotesize}
\begin{document}
\begin{tikzpicture}
\begin{axis}[thick,ticks=none,
scale only axis,
axis lines=middle,
inner axis line style={-Triangle},
ymin=-5,
ymax=5,
xmin=-1,
xmax=3,
]
\addplot[name path=f,thick, red,samples=1000,domain=0:2]{x^2+1};
\addplot[name path=g,thick,blue, samples=1000,domain=0:2]{-x^2-1};
\draw[thick,dashed] (axis cs:2,0) ellipse [x radius=0.8cm,y radius =3.4cm] ;
\draw[thick,dashed] (axis cs:0.7,0) ellipse [x radius=.3cm,y radius=1cm] ;
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这是另一种方法,使用反向方法。
- 画椭圆形首先,这样您就能提前知道它的所有坐标。出于视觉原因,请选择较窄的 y 半径。
styles
根据需要添加。 - 信封下方路径通过众所周知的椭圆坐标和两端经过深思熟虑的坐标展示了原始的线性连接。上方路径是镜像的(单位:y)并有一些控制手柄来引入一些弯曲。选择极坐标更容易获得连续切线。根据需要进行细化(因此这里现在是猜测部分)。
- 放2轴。我将一个箭头向左移动,因为这对绘图来说无关紧要。通过 选择更好的箭头
arrows.meta
。 - 最后放置节点与文本。
\documentclass[10pt,border=3mm]{standalone}
\usepackage{tikz}
\begin{document}
\tikz{% move styles here, if needed, see manual
% (1) ellipses
\draw [dashed] (2,0) circle [x radius=2mm, y radius=1cm]; % using a narrow y radius
\draw (5,0) circle [x radius=2mm, y radius=3.5cm];
% (2) envelopes
% raw
\draw (0, -.5) to (2,-1) to (5, -3.5) to (6,-5);
% nicer
\draw (0, .5) % arbitrary coordinate
.. controls +(5:.7cm) and +(205:1cm) .. (2,1) % from ell. pos and radius
.. controls +(25:2cm) and +(240:1cm) .. (5, 3.5) % same
to (6,5); % arbitrary coordinate
% the control handles ly before and after the two surrounding coordinates
% using polar coordinates makes guessing tangents easier
% (3) axes
\draw [->] (-1, -2) -- (-1,6);% use arrows.meta to change tip
\draw [->] (-2, 0) -- (7,0);
% (4) text
\node at (5,5) {$y = f(x)$};
}
\end{document}