fill
当我在(或) 命令中使用 foreach 时draw
,生成的 PDF 仅出现在某些 PDF 查看器(VS Code、Firefox)中,而不会出现在其他 PDF 查看器(MS Edge、Google Drive、Dropbox)中。
下面是复制此操作的最小代码片段:
\begin{tikzpicture}
\begin{axis}[
ticks = none,
axis lines = center,
xlabel = $x$,
ylabel = $y$,
xmin=-3,
xmax=10,
ymin=-4,
ymax=4]
\addplot [
domain=0:5,
samples=100,
color=blue
]{sqrt(x)};
\addplot [
domain=5:6,
samples=100,
color=blue,
dashed
]{sqrt(x)};
\fill [fill=green,
fill opacity=0.2]
(-3,4) -- (0,4) -- (0,-4) -- (-3,-4) -- cycle;
\fill [fill=blue,
fill opacity=0.2]
foreach \x in {0, 0.1, ..., 5}
{ -- ({\x}, {sqrt(\x)}) }
-- (4,0) -- cycle;
\end{axis}
\end{tikzpicture}
以下是 VS Code 和 Edge 并排打开同一文件的屏幕截图:
有办法解决这个问题吗?还是我必须手动输入填充的所有坐标?
PS 这不是另一个帖子,因为尽管不透明度为 0.2,但绿色填充仍可正常显示。
答案1
您缺少起始坐标:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ticks = none,
axis lines = center,
xlabel = $x$,
ylabel = $y$,
xmin=-3,
xmax=10,
ymin=-4,
ymax=4]
\addplot [
domain=0:5,
samples=100,
color=blue
]{sqrt(x)};
\addplot [
domain=5:6,
samples=100,
color=blue,
dashed
]{sqrt(x)};
\fill [fill=green,
fill opacity=0.2]
(-3,4) -- (0,4) -- (0,-4) -- (-3,-4) -- cycle;
\fill [fill=blue,
fill opacity=0.2]
(0,0) %<--- missing
foreach \x in {0, 0.1, ..., 5}
{ -- ({\x}, {sqrt(\x)}) }
-- (4,0) -- cycle;
\end{axis}
\end{tikzpicture}
\end{document}