pgfplots:注释右侧或上边界网格外的某些线段

pgfplots:注释右侧或上边界网格外的某些线段

我有以下图表,我更愿意显示网格外 3 条线段的标记:

...1 和 3 应位于右边界的右侧,靠近相应灰线与网格垂直最右边界的交点。

.2 应位于上边框上方,靠近相应灰线与网格水平上边框的交点。

我最终会选择一种避免在序言中添加内容的解决方案。

\documentclass[a4paper]{article}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\begin{document}

\begin{tikzpicture}[scale=0.7]
\begin{scope}
\begin{axis}[axis equal image=true,xlabel={x},
ylabel={y},
title={sv=12},
xtick distance=2,
ytick distance=2,
minor tick num=1,
grid=both,grid style={line width=.1pt, draw=gray!10},
major grid style={line width=.2pt,draw=gray!20},
xmin=-1,xmax=4,
ymin=-1,ymax=4]
\addplot[green!20,only marks]
    coordinates {(0, 0)(0, 1)(0, 2)(0, 3)(1, 0)(2, 0)(3, 0)};
\addplot[green!50,only marks]
    coordinates {(1, 1)(1, 2)(2, 1)};
\addplot[green!20]
    coordinates {(0, 0)(3, 0)(0, 3)(0, 0)(0, 0)};
\draw[fill=green,opacity=0.1] (axis cs:-1,1.6666666666666667) -- (axis cs:4,3.3333333333333335) -- (axis cs:4,10) -- (axis cs:-1,10) -- cycle;
\addplot[black!20,thick]
    coordinates { (-1, 1.6666666666666667) (4, 3.3333333333333335)};
\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:4,3.3333333333333335) {\scriptsize 1};
\addplot[black!20,thick]
    coordinates {(1.6666666666666667, -1) (3.3333333333333335, 4)};
\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:3.3333333333333335,4) {\scriptsize 2};
\draw[fill=green,opacity=0.1] (axis cs:-1,4.333333333333333) -- (axis cs:4,-0.6666666666666666) -- (axis cs:4,13) -- (axis cs:-1,13) -- cycle;
\addplot[black!20,thick]
    coordinates {(-1, 4.333333333333333)(4, -0.6666666666666666)};
\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:4,-0.6666666666666666) {\scriptsize 3};
\end{axis}
\end{scope}
\end{tikzpicture}
\end{document}

对应代码的图

答案1

实现此目的的一种方法是使用extra descriptions

\documentclass[a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usetikzlibrary{plotmarks}
\begin{document}

\begin{tikzpicture}[scale=0.7]
\begin{scope}
\begin{axis}[axis equal image=true,xlabel={x},
ylabel={y},
title={sv=12},
xtick distance=2,
ytick distance=2,
minor tick num=1,
grid=both,grid style={line width=.1pt, draw=gray!10},
major grid style={line width=.2pt,draw=gray!20},
xmin=-1,xmax=4,
ymin=-1,ymax=4,
extra description/.code={
\coordinate (tr) at (1.01,1.01);
\node[anchor=west,circle,fill=gray!20] (description1) at (c1-|tr) {$1$};
\node[anchor=south,circle,fill=gray!20] (description2) at (c2|-tr) {$2$};
\node[anchor=west,circle,fill=gray!20] (description3) at (c3-|tr) {$3$};
}]
\addplot[green!20,only marks]
    coordinates {(0, 0)(0, 1)(0, 2)(0, 3)(1, 0)(2, 0)(3, 0)};
\addplot[green!50,only marks]
    coordinates {(1, 1)(1, 2)(2, 1)};
\addplot[green!20]
    coordinates {(0, 0)(3, 0)(0, 3)(0, 0)(0, 0)};
\draw[fill=green,opacity=0.1] (axis cs:-1,1.6666666666666667) -- (axis cs:4,3.3333333333333335) -- (axis cs:4,10) -- (axis cs:-1,10) -- cycle;
\addplot[black!20,thick]
    coordinates { (-1, 1.6666666666666667) (4, 3.3333333333333335)};
%\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:4,3.3333333333333335) {\scriptsize 1};
\coordinate (c1) at (axis cs:4,3.3333333333333335);
\addplot[black!20,thick]
    coordinates {(1.6666666666666667, -1) (3.3333333333333335, 4)};
%\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:3.3333333333333335,4) {\scriptsize 2};
\coordinate (c2) at (axis cs:3.3333333333333335,4);
\draw[fill=green,opacity=0.1] (axis cs:-1,4.333333333333333) -- (axis cs:4,-0.6666666666666666) -- (axis cs:4,13) -- (axis cs:-1,13) -- cycle;
\addplot[black!20,thick]
    coordinates {(-1, 4.333333333333333)(4, -0.6666666666666666)};
%\node[below left,circle,draw=black!20,fill=black!10] () at (axis cs:4,-0.6666666666666666) {\scriptsize 3};
\coordinate (c3) at (axis cs:4,-0.6666666666666666);
\end{axis}
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容