我看到了一种我非常喜欢的绘图风格,并试图重现它。我在获得这种清晰的风格方面遇到了麻烦,并且在半透明的灰色边框方面也遇到了问题。
我尝试重新创建它,但是我打开了整个事物的透明度,\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}