看看下面的 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}