下面的代码
\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}