如何从一个 \begin{axis} 环境中的交叉点提取坐标值以在 pgfplots 中的第二个 \begin{axis}.. 环境中使用

如何从一个 \begin{axis} 环境中的交叉点提取坐标值以在 pgfplots 中的第二个 \begin{axis}.. 环境中使用

\begin{axis}...\end{axis}我想使用 在两个不同的环境中并排绘制两个图表pgfplots。在一个图表中,我想绘制 n 条曲线 y1=x^2、y2=2x^2、...、yn=nx^2。然后我想计算 yi (i=1,..,n) 和 y=5 的交点,将此集合称为 {(xi,zi)},并在第二张图表上生成数据 (zi,i) 的散点图。

我意识到通常的方法是发布示例TeX,但我真的不知道从哪里开始,而且我认为问题很简单。

非常感谢。

答案1

好吧,还算公平。我试了一下,也稍微扩大了问题……

这是示例代码和相应的图像。设置两条曲线颜色的方法是我瞎想的。这样做的原因是左侧的数据与组合表面和轮廓图(未显示)相关,其配色方案使用顶部定义的 mapref 配色方案。

选择的颜色值为 -3.0 和 -2.0。

右侧图表中数据的 y 值显示左侧所有交叉点(红色和绿色圆圈)的 x 值。绿点对应右侧顶部数据,红点对应右侧下方数据。右侧的 x 值由颜色值 -3.0 和 -2.0 给出。

问题是,给定颜色值作为“\addplot[] coordinates{...};”输入的一半,我如何让 pgfplots 通过查询左侧的图形自动提供 y 值。

在此处输入图片描述

  \documentclass[a4paper,10pt]{article}
  \usepackage[utf8]{inputenc}
  \usepackage[]{pgfplots}
    \pgfplotsset{compat=1.8}
    \usetikzlibrary{calc}
    \usetikzlibrary{intersections}
    \pgfplotsset{
        colormap={mapref}{rgb255(0cm)=(0,0,128) rgb255(1cm)=(0,0,255) rgb255(3cm)=(0,255,255) rgb255(5cm)=(255,255,0) rgb255(7cm)=(255,0,0) rgb255(8cm)=(128,0,0)} % This is equivalent to a renamed jet colormap
    }
  \pagenumbering{gobble}
  \begin{document}
  \begin{tikzpicture}
  \begin{axis}[
    , width=5cm
    , name=left
  ]
    \pgfplotscolormapaccess[-5:0]{-3.0}{mapref}
    \message{GOT \meaning\pgfmathresult^^J}%
    \def\TEMP{\definecolor{my color3.0}{rgb}}
    \expandafter\TEMP\expandafter{\pgfmathresult}
    \pgfplotscolormapaccess[-5:0]{-2.0}{mapref}
    \message{GOT \meaning\pgfmathresult^^J}%
    \def\TEMP{\definecolor{my color2.0}{rgb}}
    \expandafter\TEMP\expandafter{\pgfmathresult}

    \addplot[name path global=curve1, my color3.0]{x^2};
    \addplot[name path global=curve2, my color2.0]{2*x^2};
    \addplot[name path global=line]{9};
    \fill[red, name intersections={of=curve1 and line, name=int}](int-1) circle (0.1cm);
    \fill[green, name intersections={of=curve1 and line, name=int}](int-2) circle (0.1cm);
    \fill[red, name intersections={of=curve2 and line, name=int}](int-1) circle (0.1cm);
    \fill[green, name intersections={of=curve2 and line, name=int}](int-2) circle (0.1cm);
  %       \node[name intersections={of=curve and line, name=int}](int-1);
  \end{axis}
  \begin{axis}[
    , width=5cm
    , at={($(left.east)+(1.0cm,0)$)}
    , anchor=west
    , xmin=-5
    , xmax=0
    , ymin=-5
    , ymax=5
    , colormap name={mapref}
    , point meta min=-5 
    , point meta max=0
  ]
    \addplot[
      , scatter
      , scatter src=explicit
    ] coordinates{
      (-3.0,-3)[-3]
      (-2.0,-2.1213)[-2]
      };
    \addplot[
      , scatter
      , scatter src=explicit
    ] coordinates{
      (-3.0,3)[-3]
      (-2.0,2.1213)[-2]
      };
  \end{axis}
  \end{tikzpicture}
  \end{document}

相关内容