在 loglogaxis 上绘制一个矩形

在 loglogaxis 上绘制一个矩形

我需要在绘图上表示某个区域,我认为绘制矩形是最简单的方法。但其他方法也可以,我只是不知道。

预期结果: 用红色矩形绘制

我在这里显然做错了什么。

梅威瑟:

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

即,xminymin设置被忽略,因此下限取决于图中的数据,并且一个数据点根本不靠近矩形。添加clip=falseaxis选项中,您会看到矩形最终位于轴外。我不知道第一个 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}

相关内容