\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}