我正在使用 pst-plot 以线性 x 和对数 y 尺度可视化数据集。应通过用实线连接所有点来绘制数据集。\pstScalePoints(1,1){}{log}
只要数据集中没有 (x_i, y_i=0) 的点,这一切都可以正常工作。我想要实现的行为是根本不应该绘制这样的点,然后连接所有点的线在该点断开(也就是说,有连接 x_1 到 x_(i-1) 处的点的线,没有从 x_(i-1) 到 x_(i+1) 的线,并且还有从 x_(i+1) 到 x_n 的线)。例如,这是 MATLAB 中的默认行为。通过谷歌搜索,我找到了以下方法将 y=0 的点放在图形之外,但连接线仍然显示:\pstScalePoints(1,1){}{dup 0 eq { pop -1.e30 }{ log } ifelse}
。谢谢你的帮助!
要求的最小示例:
\documentclass{article}
\pagestyle{empty}
\usepackage{pstricks}
\usepackage{pst-plot}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}[showgrid=false](0,0)(10,10)
\savedata{\mydata}[{{0,0.01},{1, 0.02},{2, 0.00},{3, 0.02},{4, 0.02}}]
\pstScalePoints(1,1){}{dup 0 eq { pop -1.e30 }{ log } ifelse}
%\pstScalePoints(1,1){}{ dup 0 eq { pop pop }{ log } ifelse}
\begin{psgraph}(0,-3)(4,0){4.0cm}{4.0cm}%
\listplot[linestyle=solid, showpoints=false]{\mydata}
\end{psgraph}%
\end{pspicture}
\end{document}
答案1
尝试
\pstScalePoints(1,1){}{ dup 0 eq { pop pop }{ log } ifelse}