如何向绘图中添加透明灰色矩形边框?

如何向绘图中添加透明灰色矩形边框?

我看到了一种我非常喜欢的绘图风格,并试图重现它。我在获得这种清晰的风格方面遇到了麻烦,并且在半透明的灰色边框方面也遇到了问题。

我尝试重新创建它,但是我打开了整个事物的透明度,\pgfsetfillopacity{0.5}看起来不太好。

此外,灰色框具有手动坐标。如何设置相对于框架的框坐标而不是数据坐标?

我试图复制的情节

这就是我想抄的剧情

我编写的代码及其外观

    \begin{tikzpicture}
        \begin{axis}[
            height=7cm,
            width=11cm,
            grid=major,
            xmin=-0.5,
            xmax=20.0,
            ymin=-0.6,
            ymax=0.6,
            xlabel={Time [$s$]},
            ylabel={Position [$m$]},
            thick,
            legend columns=-1,
            legend style={/tikz/every even column/.append style={column sep=0.5cm}},
            y tick label style={
                /pgf/number format/.cd,
                    fixed,
                    fixed zerofill,
                    precision=1,
                /tikz/.cd
            },
            x tick label style={
                /pgf/number format/.cd,
                    fixed,
                    fixed zerofill,
                    precision=1,
                /tikz/.cd
            },
            every axis/.append style={font=\small}
        ]
        
        % Cool looking borders ??
        \pgfsetfillopacity{0.5} % ??
        \draw[line width=0.4pt, fill=gray] (-0.5,-0.6) rectangle (20,-0.45);
        \draw[line width=0.4pt, fill=gray] (-0.5, 0.6) rectangle (20, 0.45);
        
        % Add sine and cos plots
        \addplot[color=blue, samples=65, domain=0:20]{0.1 * sin(2 * pi * 10 * x)};
        \addplot[color=orange, mark=*, domain=0:20]{0.1 * cos(2 * pi * 10 * x)};
        
        % Add legends
        \addlegendentry{Element 1};
        \addlegendentry{Element 2};
        
        \end{axis}
    \end{tikzpicture}

我最终得到的结果有点不同。我没有找到任何与不透明度有关的东西。 此代码创建了什么

答案1

我实际上有点惊讶你\pgfsetfillopacity居然能找到fill opacity钥匙:)

尝试例如

\draw[line width=0.4pt, fill opacity=0.5, fill=gray] (-0.5,-0.6) rectangle (20,-0.45);

并删除\pgfsetfillopacity{0.5}

关于问题的最后一部分,您可以使用例如访问轴限制\pgfkeysvalueof{/pgfplots/xmin},如中所述 如何在 PGFplots 轴环境中访问 \xmin、\xmax、\ymin、\ymax

例如

\draw[plotborder] (\pgfkeysvalueof{/pgfplots/xmin},\pgfkeysvalueof{/pgfplots/ymin}) rectangle (\pgfkeysvalueof{/pgfplots/xmax},0.75*\pgfkeysvalueof{/pgfplots/ymin});

其中plotborder是新定义的样式,包含来自顶部示例中的设置fill opacity

在此处输入图片描述

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\tikzset{
  plotborder/.style={
    line width=0.4pt, fill=gray, fill opacity=0.5
    }
}
\begin{document}
\begin{tikzpicture}
        \begin{axis}[
            height=7cm,
            width=11cm,
            grid=major,
            xmin=-0.5,
            xmax=20.0,
            ymin=-0.6,
            ymax=0.6,
            xlabel={Time [s]},
            ylabel={Position [m]},
            thick,
            legend columns=-1,
            legend style={/tikz/every even column/.append style={column sep=0.5cm}},
            y tick label style={
                /pgf/number format/.cd,
                    fixed,
                    fixed zerofill,
                    precision=1,
                /tikz/.cd
            },
            x tick label style={
                /pgf/number format/.cd,
                    fixed,
                    fixed zerofill,
                    precision=1,
                /tikz/.cd
            },
            every axis/.append style={font=\small}
        ]
        
        % Cool looking borders ??
        \draw[plotborder] (\pgfkeysvalueof{/pgfplots/xmin},\pgfkeysvalueof{/pgfplots/ymin}) rectangle (\pgfkeysvalueof{/pgfplots/xmax},0.75*\pgfkeysvalueof{/pgfplots/ymin});
        \draw[plotborder] (\pgfkeysvalueof{/pgfplots/xmin},\pgfkeysvalueof{/pgfplots/ymax}) rectangle (\pgfkeysvalueof{/pgfplots/xmax},0.75*\pgfkeysvalueof{/pgfplots/ymax});
        
        % Add sine and cos plots
        \addplot[color=blue, samples=65, domain=0:20]{0.1 * sin(2 * pi * 10 * x)};
        \addplot[color=orange, mark=*, domain=0:20]{0.1 * cos(2 * pi * 10 * x)};
        
        % Add legends
        \addlegendentry{Element 1};
        \addlegendentry{Element 2};
        
        \end{axis}
    \end{tikzpicture}

\end{document}

相关内容