<p>在gnuplot中,我会这样做。
将数据绘制两次</p>
<ol>
<li><code>with lines</code>和不同的dashtype</li>
<li>和水平线<code>with vectors</code>,但前提是y值不变</李>
</ol>
<p>区分虚线有点困难,因为有些虚线彼此重叠。您需要对此进行一些优化</p>
<p><strong>代码:</strong></p>
<pre><code>### plot intermittent horizontal lines
reset session
$Data <<EOD
0.0 0 0 0 0 0 0
0.5 0 0 0 0 0 0
2.0 156.626 156.626 138.354 138.354 138.354 138.354
2.5 156.626 156.626 138.354 138.354 138.354 138.354
4.0 287.268 287.268 289.808 289.808 271.829 276.304
4.5 287.268 287.268 289.808 289.808 271.829 276.304
6.0 418.931 426.263 418.933 426.259 273.572 273.559
6.5 418.931 426.263 418.933 426.259 273.572 273.559
8.0 417.211 417.21 417.207 417.211 417.207 417.212
8.5 417.211 417.21 417.207 417.211 417.207 417.212
EOD
set key top left
set datafile missing NaN # apparently necessary for gnuplot 5.2.2
plot for [i=2:7] $Data u 1:i w l lw 2 lc i-1 dt i title sprintf("Path %d",i-1), \
for [i=2:7] y1=x1=NaN $Data u (x0=x1,x1=column(1),x0):(y0=y1,y1=column(i)):(x1-x0):(y0==y1?0:NaN) w vectors lw 4 lc i-1 nohead notitle
### end of code
</code></pre>
<p><strong>结果:</strong></p>
<p><a href="https://i.stack.imgur.com/x2Ete.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/x2Ete.png" alt="enter image description here"/></a></p>