在 pgfplots 中使用 pdfcomment 显示有关绘制点的弹出信息

在 pgfplots 中使用 pdfcomment 显示有关绘制点的弹出信息

给定一个使用 pgfplots 制作的图形,其中显示了多个点(见下面的示例),当我将鼠标移到这些点上时,我想关联一个弹出窗口,其中显示一个整数值列表(在我的示例中有 7 个整数值)。我查看了 pdfcomment 包(更具体地说是包的 example.tex 文件,其中显示了使用 \pdftooltip 在将鼠标移到图形的某个点上时显示内容),但我不知道如何:1) 以某种方式可以让 pgfplot 在它最终创建的节点中插入一些命令。2) 我也不完全理解 pdfcomment 包的 example.tex 文件中传递给 \pdftooltip 的参数背后的逻辑。

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=0.5]
\begin{axis}[xlabel={first},
             ylabel={second},
             title={Size: 7},
             minor tick num=1,
             grid=both,grid style={line width=.1pt, draw=gray!10},
             major grid style={line width=.1pt,draw=gray!10},
             xmin=-1,xmax=7,
             ymin=-1,ymax=7,
             scatter/classes={
              c1={mark=square*,blue!100},
              c2={mark=triangle*,blue!90},
              c3={mark=triangle*,blue!80},
              c4={mark=diamond*,blue!70},
              c5={mark=pentagon*,blue!60},
              c6={mark=*,blue!40},
              c7={mark=x,blue!30},
              c8={mark=+,blue!20},
              c9={mark=o,blue!10},
              c10={mark=o,green!30},
              c11={mark=o,green!20},
              c12={mark=o,green!10}}]
\addplot[scatter,only marks,
    scatter src=explicit symbolic]
    coordinates {
    (0, 0) [c1]
    (0, 1) [c1]
    (0, 2) [c1]
    (0, 3) [c1]
    (1, 4) [c2]
    (0, 4) [c2]
    (1, 5) [c3]
    (0, 5) [c4]
    (0, 6) [c6]
        };
\addplot[red]
    coordinates {
    (0,0)
    (0,6)
    (1,5)
    (1,4)
    (0,0)
        };
\end{axis}
\end{tikzpicture}
\end{document}

答案1

通常的技巧是放置一个带有不可见矩形的额外节点来表示工具提示:

tikz tootip 示例

你也pgfplots可以做同样的事情,但是它对坐标系统有一些魔力,所以你需要一些手工操作!也许还有其他方法,我不知道。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pdfcomment}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=0.5]
\begin{axis}[xlabel={first},
             ylabel={second},
             title={Size: 7},
             minor tick num=1,
             grid=both,grid style={line width=.1pt, draw=gray!10},
             major grid style={line width=.1pt,draw=gray!10},
             xmin=-1,xmax=7,
             ymin=-1,ymax=7,
             scatter/classes={
              c1={mark=square*,blue!100},
              c2={mark=triangle*,blue!90},
              c3={mark=triangle*,blue!80},
              c4={mark=diamond*,blue!70},
              c5={mark=pentagon*,blue!60},
              c6={mark=*,blue!40},
              c7={mark=x,blue!30},
              c8={mark=+,blue!20},
              c9={mark=o,blue!10},
              c10={mark=o,green!30},
              c11={mark=o,green!20},
              c12={mark=o,green!10}}]
\addplot[scatter,only marks,
    scatter src=explicit symbolic]
    coordinates {
    (0, 0) [c1]
    (0, 1) [c1]
    (0, 2) [c1]
    (0, 3) [c1]
    (1, 4) [c2]
    (0, 4) [c2]
    (1, 5) [c3]
    (0, 5) [c4]
    (0, 6) [c6]
        };
\addplot[red]
    coordinates {
    (0,0)
    (0,6)
    (1,5)
    (1,4)
    (0,0)
        };
\end{axis}
% this must be outside the axis environment!!!!
\node at (.85,.7) {\pdftooltip{\rule{0pt}{1mm}\rule{1mm}{0pt}}{c1}};
\node[draw=red] at (.85,5) {\pdftooltip{\rule{0pt}{1mm}\rule{1mm}{0pt}}{c6}};
\end{tikzpicture}
\hfill
\begin{tikzpicture}
    \draw [<->,thick] (0,2) node (yaxis) [above] {$y$}
        |- (3,0) node (xaxis) [right] {$x$};
    \draw (0,0) coordinate (a_1) -- (2,1.8) coordinate (a_2);
    \draw (0,1.5) coordinate (b_1) -- (2.5,0) coordinate (b_2);
    \coordinate (c) at (intersection of a_1--a_2 and b_1--b_2);
    \draw[dashed] (yaxis |- c) node[left] {$y'$}
        -| (xaxis -| c) node[below] {$x'$};
    %
    \fill[red] (0,0) circle (2pt);
    \draw (0,0) node {\pdftooltip{\rule{0pt}{0.5cm}\rule{0.5cm}{0pt}}{Origin}};
    %
    \draw[red] (1.5,2) node {\pdftooltip{\textbullet}{1.5,2.0}};
    %
    \fill[red] (c) circle (2pt)
    let
        \p1 = (current path bounding box.south west),
        \p2 = (current path bounding box.north east)
    in
    node at (current path bounding box)
    {\pdftooltip{\rule{\dimexpr\x2-\x1\relax}{0pt}\rule{0pt}{\dimexpr\y2-\y1\relax}}%
    {This is the intersection point\textCR of the two lines!}};   
\end{tikzpicture}
\end{document}

pgfplots 注释示例

但是,pgfplots它有自己的使用 Javascript 实现注释的方法,但仅适用于 Adob​​e(Reader),请参阅文档中的“5.1 可点击图”部分!

相关内容