我需要制作几张图来显示收敛。其中一张图需要不透明,中间有一个白色圆圈,不允许使用 alpha。
在代码中你可以看到我的想法。圆圈应该在背景中。轴标签等应该在上层。
我也尝试过使用命令之间的填充来完成此操作,尽管我没有让它工作。
平均能量损失
\documentclass[a4paper]{scrartcl}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{intersections}
\usetikzlibrary{backgrounds}
\usepackage{graphicx}
\begin{document}
\begin{tikzpicture}[background rectangle/.style={fill=gray!50}, show background rectangle]
\begin{axis}[
width=1.3\linewidth,
xmin=-2,
xmax=2,
ymin=-2,
ymax=2,
axis equal,
axis lines=middle,
xlabel=Re($z$),
ylabel=Im($z$),
disabledatascaling]
\fill [white] (0,0) circle [radius=0.8];
\end{axis}
\end{tikzpicture}
\end{document}
答案1
你是指这样的吗?
上面的图像是使用选项获得的axis on top
。在代码中更正了图像宽度。现在不比文本的宽度宽。
\documentclass[a4paper]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{backgrounds,
intersections}
\begin{document}
\begin{tikzpicture}[
background rectangle/.style={fill=gray!50}, show background rectangle]
\begin{axis}[
width=\linewidth,
xmin=-2,
xmax= 2,
ymin=-2,
ymax= 2,
axis equal,
axis lines=middle,
xlabel=Re($z$),
ylabel=Im($z$),
disabledatascaling,
axis on top] % <---
\fill [white] (0,0) circle [radius=0.8];
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这是一个基于 的解决方案even odd rule
,它避免了先填充灰色然后在顶部填充白色,因此可以说更接近标题中要求的:“填充除图中间的圆圈以外的所有内容”。
\documentclass[a4paper]{scrartcl}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{intersections}
\usetikzlibrary{backgrounds}
\usepackage{graphicx}
\begin{document}
\begin{tikzpicture}[background rectangle/.style={fill=gray!50,even odd rule,
insert path={(0,0) circle [radius=3]}},
show background rectangle]
\begin{axis}[at={(0,0)},anchor=center,
width=1.3\linewidth,
xmin=-2,
xmax=2,
ymin=-2,
ymax=2,
axis equal,
axis lines=middle,
xlabel=Re($z$),
ylabel=Im($z$),
disabledatascaling]
\end{axis}
\end{tikzpicture}
\end{document}