我需要在绘图上表示某个区域,我认为绘制矩形是最简单的方法。但其他方法也可以,我只是不知道。
我在这里显然做错了什么。
梅威瑟:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\bigskip
\begin{loglogaxis}[
minor y tick num=4,
minor x tick num=4,
height={},
xmin=0,
ymin=0,
ymax=1000000,
xmax=1000,
%xtickten={0.001,1},
legend cell align=left,
legend pos=north east,
]
\addplot [mark=*,only marks] coordinates {(126.263,1.07)};
\draw [red] (axis cs:5,0) rectangle (axis cs:30,10) ;
% \draw [blue] (5,0) rectangle (30,10) ;
\end{loglogaxis}
\end{tikzpicture}
\end{document}
答案1
您的文件实际上并没有太大的错误\draw
,但如果您查看文件,.log
您就会发现问题出在哪里:
Package pgfplots Warning: Ignoring illegal input argument xmin=0: cannot apply
log. on input line 22.
Package pgfplots Warning: Ignoring illegal input argument ymin=0: cannot apply
log. on input line 22.
即,xmin
和ymin
设置被忽略,因此下限取决于图中的数据,并且一个数据点根本不靠近矩形。添加clip=false
到axis
选项中,您会看到矩形最终位于轴外。我不知道第一个 y 坐标的零值到底是如何解释的,但零在这里真的没有意义……
将这些下轴限制设置为大于零的某个有用值,它们将被应用:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\bigskip
\begin{loglogaxis}[
minor y tick num=4,
minor x tick num=4,
height={},
xmin=1, % <-- modified
ymin=0.1, % <-- modified
ymax=1000000,
xmax=1000,
%xtickten={0.001,1},
legend cell align=left,
legend pos=north east,clip=false
]
\addplot [mark=*,only marks] coordinates {(126.263,1.07)};
\draw [red] (axis cs:5,0.2) rectangle (axis cs:30,10);
% because you have compat=1.16, axis cs: is not required, and this does the same:
% \draw [red] (5,0.2) rectangle (30,10);
\end{loglogaxis}
\end{tikzpicture}
\end{document}
答案2
你可以使用axis description cs
坐标系,其中每个轴从 0 到 1。因此,
\draw [red, ultra thick] (axis description cs:0.15,0) rectangle (axis description cs:0.45,0.30) ;
产生红色矩形。
如果要坚持使用axis cs
坐标系,则需要使用点的实际坐标。因此,如下所示:
\draw [blue] (axis cs:140,0.1) rectangle (axis cs:300,100) ;
绘制蓝色矩形。
代码:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
minor y tick num=4,
minor x tick num=4,
height={},
xmin=0,
ymin=0,
ymax=1000000,
xmax=1000,
%xtickten={0.001,1},
legend cell align=left,
legend pos=north east,
]
\addplot [mark=*,only marks] coordinates {(126.263,1.07)};
\draw [red, ultra thick] (axis description cs:0.15,0) rectangle (axis description cs:0.45,0.30) ;
\draw [blue, ultra thick] (axis cs:140,0.1) rectangle (axis cs:300,100) ;
\end{loglogaxis}
\end{tikzpicture}
\end{document}