给定一个使用 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
通常的技巧是放置一个带有不可见矩形的额外节点来表示工具提示:
你也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
它有自己的使用 Javascript 实现注释的方法,但仅适用于 Adobe(Reader),请参阅文档中的“5.1 可点击图”部分!