使用交叉坐标在 pgfplots 中绘制另一个图形

使用交叉坐标在 pgfplots 中绘制另一个图形

我一直在尝试创建一个通过两个线性图的交点的二次图。到目前为止,我已经能够得到角点,但似乎无法在 \addplots 中使用交点。这是我目前得到的结果。

\usepackage{tikz, pgfplots}
\usetikzlibrary{calc, intersections}

\pgfplotsset{compat=1.16}

\begin{document}
\begin{tikzpicture}
\begin{axis} [
    xmin=0,
    xmax=10,
    ymin=0,
    ymax=10,
    domain=-10:10,
]

\addplot[color=black, name path=A] {x};
\addplot[color=black, name path=B] {-x + 10};
\addplot[name intersections={of=A and B, by=C}] coordinates {(C)};

\end{axis}
\end{tikzpicture}
\end{document}

似乎\addplot[name intersections={of=A and B, by=C}] coordinates {(C)};最后一个 (C) 中的这行有错误,因为当我将 (C) 替换为 (0,0) 时,绘图可以正常呈现而没有交点。

如果这个方法可行,我打算使用 C 给出的 xy 坐标来设置另一个二次图的顶点,其公式为 a(xv)^2+h。有办法实现这个吗?

答案1

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}[
declare function={
a1=1; b1=0;
a2=-1; b2=10;
f1=a1*x+b1;
f2=a2*x+b2;
v=(b2-b1)/(a1-a2);
h=a1*v+b1;
a=0.2;
f3=a*(x-v)^2+h;
}]
\begin{axis}[
xmin=0, xmax=10,
ymin=0, ymax=10,
domain=-10:10,
]
\addplot[samples=2] {f1};
\addplot[samples=2] {f2};
\addplot[red, thick, samples=50, smooth] {f3};
\end{axis}
\end{tikzpicture}
\end{document}

两个线性图和一条抛物线

答案2

这是另一种方法元帖子

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
    numeric u; u = 20;
    path xx, yy, A, B, C;
    xx = (left -- 11 right) scaled u;
    yy = (down -- 11 up) scaled u;

    A = (left--right) scaled 16u rotated 45;  % y = x
    B = (left--right) scaled 16u rotated -45 shifted (0, 10u); % y = 10 - x
    C = (-1, 1){1, -2} .. (-1/2, 1/4){1, -1} ..  (0, 0){1, 0} .. (1/2, 1/4){1, 1} .. (1, 1){1, 2};  % y = x^2
    C := C scaled 10u shifted (A intersectionpoint B);

    drawarrow xx;
    drawarrow yy;
    % now save the size of the drawing so far
    interim bboxmargin := 0pt; path b; b = bbox currentpicture;

    draw A withcolor 2/3 blue; 
    draw B withcolor 2/3 blue; 
    draw C withcolor 2/3 red;

    clip currentpicture to b;

endfig;
\end{mplibcode}
\end{document}

我稍微猜测了一下 OP 真正想要的是什么,但如果你用它来编译它,lualatex你会得到这个:

在此处输入图片描述

欲了解有关 Metapost 的更多信息,请点击顶部的链接。

相关内容