0

Gnuplot 4.6 パッチレベル 4 で次のコードを使用して、splot 内に点線をプロットしようとしています。

set terminal "pdfcairo" enhanced dashed size 15,10
set pm3d map
set output "test.pdf"
splot 'map.dat' using 1:($2/1000):3 notitle, \
   'line1.dat' using 1:($2/1000):1 notitle with lines ls 2, \
   'line2.dat' using 1:($2/1000):1 notitle with lines ls 2
unset output

ヒート マップが機能し、line1.dat も機能します。ただし、2 番目の線はほとんど実線で表示されます。違いは、line1.dat には 70 のエントリがあり、line2.dat には 900 のエントリがあることです。2 番目の行には 2 つの点の間のジャンプがあり、点線になっています。

線全体が点線で表示されるようにドット密度を変更する方法を誰かが知っていますか? 元のデータ ファイルを変更することはできません。

ご協力ありがとうございました、

ノーズ

編集:

私が見つけた1つの回避策は

splot 'line2.dat' every ...

しかし、それはデータのジャンプで不便になる可能性があります。

4

2 に答える 2

1

このコマンド(s)plot 'line.dat' with linesは、最初にデータポイントをプロットし、次にそれぞれの線種の線を使用してデータポイントを接続します。データポイントが互いに近すぎると、破線の線種が使用されたときに隙間ができなくなります。

点線/破線を表示するには、点を関数で置き換えるか、点の数を減らしてみてください。

  • 破線ではなく点線を試してください。線種と線色は個別に設定できます: splot 'line.dat' with lines ls 0 lc 2. このアプローチでは 900 ポイントは多すぎるかもしれません。

  • 関数をあてはめることはできますが、適切な関数を見つけるのはおそらく難しすぎます。

  • このeveryオプションはポイント数を減らします。

  • smoothポイントの数を減らす別の可能性は、オプションを使用してポイントを補間することです。これには一時ファイルが必要で、次のように機能します。

    # [prepare plot]
    set samples 100
    set table "line2.dat.tmp"
    plot 'line2.dat' using 1:($2/1000) smooth mcsplines with lines ls 2 
    unset table
    
    set terminal "pdfcairo" enhanced dashed size 15,10
    set pm3d map
    set output "test.pdf"
    
    # [plot]
    splot 'map.dat' using 1:($2/1000):3 notitle, \
       'line1.dat' using 1:($2/1000):1 notitle with lines ls 2, \
       'line2.dat.tmp' using 1:2:1 notitle with lines ls 2
    
    unset output
    

[prepare plot] セクションで、line2.dat を補間するデータポイントを含む一時ファイル「line2.dat.tmp」が作成されます。set samples適切な数のポイントを獲得するには、プレイする必要があります。この例では、距離が異なる 900 個のポイントではなく、100 個の等距離ポイントがあります。このオプションsmooth mcsplinesは、元のデータ ポイントの単調性と凸性を保持しますhelp smooth mcsplines。gnuplot シェルを参照してください。

[plot] セクションでは、元の「lines2.dat」が補間されたデータに置き換えられます。

このアプローチは、元のデータが十分に滑らかで、900 ポイントを 100 ポイントに置き換えても重要な情報がスキップされない場合に機能します。「lines2.dat」と「lines2.dat.tmp」の両方を 1 つの図にプロットして比較したい場合があります。

于 2016-10-25T23:05:15.793 に答える
0

User the every key-word, like this:

'line2.dat' every 20 using 1:($2/1000):1 notitle with lines ls 2
于 2016-10-24T23:39:01.903 に答える