\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-eucl,pst-plot}
\begin{document}
\begin{pspicture}[algebraic,saveNodeCoors](-1.5,-1.5)(2.5,2)
\psset{linewidth=0.5pt,unit=1.25cm,plotstyle=curve}
\psclip{\psframe[framearc=0.1](-1,-1)(2,1.5)}% <<-- ,linestyle=none
\psaxes[Dx=1,dx=1,Dy=1,dy=1,subticks=2,subticksize=1,labels=none,ticksize=2pt -2pt]{->}(0,0)(-1,-1)(3,2)
\def\f{x^4-x}
\def\g{x/(sqrt(x^2+1))}
\psset{PointSymbol=none,PointName=none}
\pstInterFF{\f}{\g}{0}{M_1}
\pstInterFF{\f}{\g}{1}{M_0}
\pscustom[fillstyle=solid,fillcolor=cyan,opacity=.5,linestyle=none]{%
\psplot{N-M_0.x}{N-M_1.x}{\f}
\psplot{N-M_1.x}{N-M_0.x}{\g}}
\psplot[linecolor=blue]{-1}{1.5}{\f}
\psplot[linecolor=green]{-1}{2}{\g}
\rput(M_0){\psframebox{}}
\endpsclip
% \psframe[framearc=0.1](-1,-1)(2,1.5) % <<--
\rput(1,-0.6){\tiny $y=x^4-x$}
\rput(0.5,1.2){\tiny $ \displaystyle \frac{x}{\sqrt{x^2+1}}$}
\psline{->}(0.6,0.95)(0.8,0.65)
\uput{3pt}[180](-1,0){$-1$}
\uput{3pt}[-90](0,-1){$-1$}
\uput{3pt}[0](2,0){$2$}
\uput{3pt}[90](0,1.5){$1.5$}
\end{pspicture}
\end{document}
如果
\psclip{\psframe[framearc=0.1,linestyle=none](-1,-1)(2,1.5)}
...
\psframe[framearc=0.1](-1,-1)(2,1.5)
输出是正确的
要在两个函数之间填充颜色,你可以看到这样的效果:
答案1
这里需要注意的是,从pstricks
文档(部分28 剪辑),
命令
\psclip{<graphics>} ... {} \endpsclip
设置剪切路径到对象绘制的路径
<graphics>
,直到\endpsclip
到达命令。
我在这里强调了“剪切路径”,它排除了中风(及其相关宽度)。当您将元素内的 增加到linewidth
某个不合适的值(例如10pt
)时,您会看到这一点<graphics>
:
这就是为什么建议使用linestyle=none
并在事后重置相同的帧以实现良好的叠加。文档中的第一个示例执行相同的操作:
\documentclass{article}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}(10,10)
\psclip{%
\pscustom[linestyle=none]{%
\psplot{.5}{4}{2 x div}% 2/x
\lineto(4,4)}
\pscustom[linestyle=none]{%
\psplot{0}{3}{3 x x mul 3 div sub}% 3-(x^2)/3
\lineto(0,0)}}
\psframe*[linecolor=gray](0,0)(4,4)% Sets the shaded fill
\endpsclip
\psplot[linewidth=1.5pt]{.5}{4}{2 x div}% Redraw 2/x
\psplot[linewidth=1.5pt]{0}{3}{3 x x mul 3 div sub}% Redraw 3-(x^2)/3
\psaxes(4,4)% Axes
\end{pspicture}
\end{document}
因此,本质上,“形状”用于剪辑,这不包括笔触,可能需要重新绘制笔触才能获得所需的效果。
答案2
我只需要一 \psclip
为蓝色曲线。填充可以用 完成\pscustom
。您已经拥有交点:
\documentclass[border=10pt,pstricks]{standalone}
\usepackage{pst-eucl,pst-plot}
\begin{document}
\def\f{x^4-x}
\def\g{x/(sqrt(x^2+1))}
\begin{pspicture}[algebraic,saveNodeCoors](-1.5,-1.5)(2.5,2)
\psset{linewidth=0.5pt,unit=1.25cm,plotstyle=curve}
\psaxes[subticks=2,subticksize=1,labels=none,ticksize=2pt -2pt]{->}(0,0)(-1,-1)(2,1.5)[2,0][1.5,90]
\psset{PointSymbol=none,PointName=none}
\pstInterFF{\f}{\g}{0}{M_1}
\pstInterFF{\f}{\g}{1}{M_0}
\psdot[dotstyle=square,dotsize=0.25](M_0)
\pscustom[fillstyle=solid,fillcolor=cyan,opacity=0.5,linestyle=none]{%
\psplot{N-M_0.x}{N-M_1.x}{\f}
\psplot{N-M_1.x}{N-M_0.x}{\g}}
\psclip{\psframe[framearc=0.1](-1,-1)(2,1.5)}
\psplot[linecolor=blue]{-1}{1.5}{\f}
\endpsclip
\psplot[linecolor=green]{-1}{2}{\g}
\rput(1,-0.6){\tiny $y=x^4-x$}
\rput(0.5,1.2){\tiny $ \displaystyle \frac{x}{\sqrt{x^2+1}}$}
\psline{->}(0.6,0.95)(0.8,0.65)
\uput{3pt}[180](-1,0){$-1$}
\uput{3pt}[-90](0,-1){$-1$}
\end{pspicture}
\end{document}