填充除图中间的圆圈之外的所有内容

填充除图中间的圆圈之外的所有内容

我需要制作几张图来显示收敛。其中一张图需要不透明,中间有一个白色圆圈,不允许使用 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}

在此处输入图片描述

相关内容