我想找到某个图形的交点是-值,以便在曲线之间创建混合路径。但是,出于某种原因,TikZ 没有检测到第三个交叉点。
以下是代码:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usetikzlibrary{pgfplots.fillbetween,intersections}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle, xlabel=$x$, ylabel=$y$,
xlabel style={below right}, ylabel style={above left}, ticks=none,
xmin=0, xmax=3.5, ymin=0, ymax=1]
\addplot[name path=Tb, domain={0.4:3.4},samples=500] {-3/x^2+(8*0.85)/(3*x-1)};
\draw[name path=l1] (axis cs:0.5, 0.57) -- (axis cs:3.35,0.57);
\draw[red, name path=part1, intersection segments={of=Tb and l1, sequence={L1--R2--L3}}];
\fill [name intersections={of=l1 and Tb, name=E, total=\t}]
[red]
\foreach \s in {1,2,...,\t}{(E-\s) circle (1pt)};
\end{axis}
\end{tikzpicture}
\end{document}
我们清楚地看到,曲线之间有第三个交点,但 TikZ 无法检测到它。即使我将水平线分成两部分,TikZ 也无法检测到最后一个点。有什么办法可以解决这个问题吗?
答案1
- 我鼓励你升级你的 ˙pgfplots` 安装(找到第三个交点并不重要,但无论如何,这样做是值得的)
- 我猜,你喜欢获得以下图表:
与您的 MWE 相比,我在绘制红线时仅添加了第四段,并使用了pgfplots
版本 1.11 之后启用的最新语法:
\documentclass[border=3.141592]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.fillbetween,
intersections}
\pgfplotsset{compat=1.17} % <---
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
xlabel=$x$, ylabel=$y$,
xlabel style={below right},
ylabel style={above left},
ticks=none,
xmin=0, xmax=3.5, ymin=0, ymax=1
]
\addplot[name path=Tb, domain={0.4:3.4},samples=101] {-3/x^2+(8*0.85)/(3*x-1)};
\draw[name path=l1] (0.5, 0.57) -- (3.35,0.57);
\draw[red, intersection segments={of=Tb and l1, sequence={L1--R2--L3--R4}}]; % <---
\fill [name intersections={of=l1 and Tb, name=E, total=\t}]
[red, very thick, semitransparent]
\foreach \s in {1,2,...,\t}{(E-\s) circle[radius=2pt] };
\end{axis}
\end{tikzpicture}
\end{document}
该解决方案也适用于pgfplots
1.15 版本(未经测试)。
答案2
只是检查一下...(使用tzplot
包裹:)
\documentclass[tikz]{standalone}
\usepackage{tzplot} %%
\begin{document}
\begin{tikzpicture}[scale=2.2]
\tzhelplines[step=.5](3.5,1)
\tzaxes*(3.5,1){$x$}{$y$}
\def\Tb{-3/(\x)^2+(8*0.85)/(3*\x-1)}
\begin{scope}
\clip(0,0)rectangle(3.5,1);
\tzfn\Tb[0.4:3.4]
\tzhfnat[red]"hori"{0.57}[0.4:3.4]
\tzXpoint{Tb}{hori}(A)
\end{scope}
\tzdots*(A)(A-2)(A-3); %% (A)=(A-1)
\end{tikzpicture}
\end{document}