pscustom 填充问题 2 次 psLorenz

pscustom 填充问题 2 次 psLorenz

看看下面的 MWE,它是通过以下方式编译的latex->dvips->ps2pdf

\PassOptionsToPackage{dvipsnames,table}{xcolor}
\documentclass[pstricks,border=0pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage[gray]{databar}
\usepackage{xcolor}  
\usepackage{pst-plot} 
\usepackage{pst-func}
\usepackage{pst-blur}
\usepackage{pst-lens} 
\usepackage{pst-intersect}
\usepackage{pstricks-add} 


 \xdefinecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
 \xdefinecolor{hellgrau}{rgb}{0.95,0.95,0.95}

\providecommand{\mytext}{}

\providecommand{\gengini}[6]{%
\newpage%
\FPupn{fra}{#1}%
\pstVerb{/ra \fra\space def}%
\FPupn{frb}{#2}%
\pstVerb{/rb \frb\space def}%
\FPupn{frc}{#3}%
\pstVerb{/rc \frc\space def}%
\FPupn{frd}{#4}%
\pstVerb{/rd \frd\space def}%
\FPupn{fre}{#5}%
\pstVerb{/re \fre\space def}%
\FPupn{frf}{#6}%
\psset{lly=-13mm,llx=-9mm,urx=25mm,ury=15mm}%
\psgraph[xAxisLabel={\ },yAxisLabel={\ },Ox=0,Dx=20,Dy=0.2,dx=0.2](-0.0,-0.0)(1,1){6cm}{6cm}%
 \psclip{%
 \pscustom[linestyle=none,fillstyle=solid,fillcolor=red]{%
     \psLorenz[plotstyle=bezier,linecolor=black,liftpen=2]{0.025 0.2 0.21 0.27 0.295}%
     \psLorenz[plotstyle=bezier,linecolor=black,liftpen=2]{ra rb rc rd re}%
     }%
    }%
\endpsclip%
\endpsgraph%
}%


\begin{document}
\gengini{0.00135847}{0.00411338}{0.00163124}{0.00079123}{0.99210568}{1}%   

\end{document}

目标:在两条曲线之间填充颜色(或其他填充样式)psLorenz。注意:要求不要减去面积,因为这段代码也是其他代码的一部分……这不是问题的一部分,因此被删除了。

我曾尝试解决这个问题,但我觉得我无法将端点连接在一起。

更新:目标:两个 pslorenz 之间为红色。lorenz 和简单线之间无填充

答案1

\psLorenz宏使用\listplot,并且两个图的点的顺序相同(x 值从左到右)。为了填充两条曲线之间的区域,必须使用为在两条曲线之间ChangeOrder填充的情况明确提供的参数反转其中一条曲线\listplot

\documentclass[pstricks,border=0pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pst-func}

\begin{document}
\psset{lly=-13mm,llx=-9mm,urx=25mm,ury=15mm}%
\psgraph[xAxisLabel={\ },yAxisLabel={\ },Ox=0,Dx=20,Dy=0.2,dx=0.2](-0.0,-0.0)(1,1){6cm}{6cm}%
\pscustom[linestyle=none,fillstyle=solid,fillcolor=red]{%
  \psLorenz[plotstyle=bezier]{0.025 0.2 0.21 0.27 0.295}
  \psLorenz[plotstyle=bezier, ChangeOrder]{ 0.00135847 0.00411338 0.00163124 0.00079123 0.99210568 1}%
}%
\endpsgraph% 
\end{document}

在此处输入图片描述

我使用 生成了此 png pdftocairo -r 100 -png。当使用 例如 查看生成的 pdf 文件时,okular我看到一条伪影线,我无法将其删除。以下屏幕截图显示了这一点:

在此处输入图片描述

或者,您可以使用pst-intersect保存第一条\psLorenz曲线,然后在使用以下方法追踪时反转此路径\pstracecurve

\documentclass[pstricks,border=0pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pst-func}
\usepackage{pst-intersect}

\begin{document}
\psset{lly=-13mm,llx=-9mm,urx=25mm,ury=15mm}%
\psgraph[xAxisLabel={\ },yAxisLabel={\ },Ox=0,Dx=20,Dy=0.2,dx=0.2](-0.0,-0.0)(1,1){6cm}{6cm}%
  \pssavepath{Lorenz}{\psLorenz[plotstyle=bezier]{0.025 0.2 0.21 0.27 0.295}}
  \pscustom[fillstyle=solid,fillcolor=red]{%
    \pstracecurve[reversepath]{Lorenz}
    \psLorenz[plotstyle=bezier]{ 0.00135847 0.00411338 0.00163124 0.00079123 0.99210568 1}%
  }%
\endpsgraph% 
\end{document}

请注意,对于后一种解决方案,您需要开发版本的pst-intersect请注意,对于后一种解决方案,您需要来自https://github.com/cbersch/pst-intersect

在此处输入图片描述

答案2

使用两个单一填充,当然,不要对洛伦兹曲线使用曲线样式贝塞尔:

\documentclass[pstricks,border=10pt]{standalone}
\usepackage{pst-func}

\begin{document}
    \psset{lly=-13mm,llx=-9mm,urx=5mm,ury=5mm}%
    \psgraph[xAxisLabel={},yAxisLabel={},Dx=20,Dy=0.2,
      dx=0.2](0,0)(1,1){6cm}{6cm}%
        \psLorenz*[linecolor=blue!40]{0.025 0.2 0.21 0.27 0.295}
        \kern0.5pt% to get rid of a small vertical rule
        \psLorenz*[linecolor=white,dimen=inner]{ 0.00135847 0.00411338 0.00163124 0.00079123 0.99210568 1}
    \endpsgraph 

\end{document}

在此处输入图片描述

相关内容