两条曲线之间填充了不需要的线

两条曲线之间填充了不需要的线

下面的代码

\documentclass[12pt]{memoir}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}

\begin{document}
    
    \begin{tikzpicture}
    \draw[->] (-3, 0) -- (5, 0) node[below]{$x$};
    \draw[->] (0, -2 ) -- (0, 4) node[left]{$y$};
    \draw[fill=lightgray, domain=0:1] plot(\x, {sqrt(\x)} ) -- (1, 0) -- (0, 0);
    \draw[line width=1.6pt, red] plot[smooth,domain=-2:2] (\x, {(\x)^2});
    \draw[line width=1.6pt, cyan] plot[smooth,domain=0:4] (\x, {sqrt(\x)});
    \draw[line width=1.6pt, cyan] plot[smooth,domain=0:4] (\x, {-sqrt(\x)});
    \draw (0, 0) node[below left]{$\mathrm{O}$};
    \draw (1, 1) node[above left]{$\mathrm{A}$};
    \draw[draw=none , fill=white , domain=0:1] plot(\x, {(\x)^2} ) -- (1, 0) -- (0, 0);
    \draw[black] (1, 0) -- (0, 0);
    \end{tikzpicture}
    
\end{document}

产生以下内容:

在此处输入图片描述

但是,正如您所说,我们画出了一条从 (1, 1) 到 (1, 0) 的不需要的线。尽管使用了命令,\draw=none我仍然无法摆脱这条线,尽管我明白为什么这条线在那里。

有什么解决方法可以去掉多余的线吗?

附言:我对使用该库的 pgfplots 方法不感兴趣\fillbetween

答案1

问题在于命令

\draw[fill=lightgray, domain=0:1] plot(\x, {sqrt(\x)} ) -- (1, 0) -- (0, 0);

它会从抛物线的最后一点到点 (1,0) 画一条线。如果您不想要这条线,请更改\draw\fill或添加选项draw=none

此外,我想改变一些其他的东西。最好在画线之前先画填充,你可以直接在两个抛物线之间画灰色填充,这样你就不需要白色填充重叠了。

像这样:

\documentclass[12pt]{memoir}
%\usepackage{amsmath}
%\usepackage{amsfonts}
%\usepackage{amssymb}
\usepackage{tikz}

\begin{document}
    
    \begin{tikzpicture}
    \fill[lightgray, domain=0:1] plot(\x, {sqrt(\x)} ) -- plot (1- \x, {(1-\x)*(1-\x)});
    \draw[->] (-3, 0) -- (5, 0) node[below]{$x$};
    \draw[->] (0, -2) -- (0, 4) node[left] {$y$};
    \draw[line width=1.6pt, red]  plot[smooth,domain=-2:2] (\x, \x*\x);
    \draw[line width=1.6pt, cyan] plot[smooth,domain=-2:2] (\x*\x, \x);
    \draw (0, 0) node[below left]{$\mathrm{O}$};
    \draw (1, 1) node[above left]{$\mathrm{A}$};
    \end{tikzpicture}
    
\end{document}

在此处输入图片描述

答案2

在此处输入图片描述

仅使用一条曲线(抛物线)和even odd rule选项。

代码

\documentclass[12pt, margin=1cm]{standalone}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  % the fill
  \draw[fill=lightgray] plot[smooth, domain=-1.5:1.5] (\x, {(\x)^2});
  \draw[fill=white, even odd rule]
  plot[smooth, domain=-2:2] (\x, {(\x)^2})
  plot[smooth, domain=-2:2] ({(\x)^2}, \x);

  % the curves
  \draw[red, line width=1.6pt] plot[smooth, domain=-2:2] (\x, {(\x)^2});
  \draw[cyan, line width=1.6pt] plot[smooth, domain=-2:2] ({(\x)^2}, \x);

  % the axes
  \draw[->] (-3, 0) -- (5, 0) node[below]{$x$};
  \draw[->] (0, -2 ) -- (0, 4) node[left]{$y$};

  % the points
  \draw (0, 0) node[below left]{$O$};
  \draw (1, 1) node[above left]{$A$};
\end{tikzpicture}
\end{document}

相关内容