12

次のスクリプトを使用して、関数をプロットに当てはめています。出力プロットでは、フィッティング曲線にエチケットを使用して単一の値を追加したいと思います。たとえば、ポイント f(3.25) です。特にこのプロットがフィッティング関数プロットである場合、gnuplot がプロットに 1 つの点を追加するのは非常に難しいと読んだことがあります。

誰かが既存のプロットにこの単一のポイントを追加する方法を知っていますか?

set xlabel "1000/T (K^-^1)" font "Helvetica,20"    
#set ylabel "-log(tau_c)"       font "Helvetica,20"    
set ylabel "-log{/Symbol t}_c (ns)"     font "Helvetica,20"    
set title  "$system $type $method"        font "Helvetica,24"    
set xtics      font "Helvetica Bold, 18"                                  
set ytics      font "Helvetica Bold, 18"                                  
#set xrange[0:4]
set border linewidth 3
set xtic auto                          # set xtics automatically
set ytic auto                          # set ytics automatically
#set key on bottom  box lw 3 width 8 height .5 spacing 4 font "Helvetica, 24"
set key  box lw 3 width 4 height .5 spacing 4 font "Helvetica, 24"

set yrange[-5:]
set xrange[1.5:8]
f(x)=A+B*x/(1000-C*x)

A=1 ;B=-227 ; C=245

fit  f(x) "$plot1" u (1000/\$1):(-log10(\$2)) via A,B,C

plot [1.5:8] f(x)  ti "VFT" lw 4,  "$plot1" u (1000/\$1):(-log10(\$2)) ti "$system $type" lw 10



#set key on bottom  box lw 3 width 8 height .5 spacing 4 font "Helvetica, 24"

set terminal postscript eps color dl 2 lw 1 enhanced # font "Helvetica,20"

set output "KWW.eps"                                              



replot
4

3 に答える 3

23

ポイント/ドットを設定するには、いくつかの可能性があります。

1.オブジェクトを設定する

円、円くさび、正方形などの単純な点がある場合は、 を使用できますset object。これは、それぞれのplotコマンドの前に定義する必要があります。

set object circle at first -5,5 radius char 0.5 \
    fillstyle empty border lc rgb '#aa1100' lw 2
set object circle at graph 0.5,0.9 radius char 1 arc [0:-90] \
    fillcolor rgb 'red' fillstyle solid noborder
set object rectangle at screen 0.6, 0.2 size char 1, char 0.6 \
    fillcolor rgb 'blue' fillstyle solid border lt 2 lw 2

plot x

ラベルを追加するには、 を使用する必要がありますset label

これは面倒かもしれませんが、異なる線と塗りつぶしの色を使用でき、異なる座標系 ( 、firstなど)を使用できるという利点があります。graphscreen

4.6.4 の結果は次のとおりです。

ここに画像の説明を入力

2. ポイント オプションで空のラベルを設定する

このset labelコマンドにはpoint、特定の座標で既存のポイント タイプを使用してポイントを設定するために使用できるオプションがあります。

set label at xPos, yPos, zPos "" point pointtype 7 pointsize 2

3.「+」でプロット

+最後の可能性は、一連の座標を生成する特別な filename を使用することです。これにより、一連の座標がフィルタリングされ、labelsプロット スタイルを使用してプロットされます (またはpoints、ラベルが要求されていない場合:

f(x) = x**2
x1 = 2

set xrange[-5:5]
set style line 1 pointtype 7 linecolor rgb '#22aa22' pointsize 2
plot f(x), \
     '+' using ($0 == 0 ? x1 : NaN):(f(x1)):(sprintf('f(%.1f)', x1)) \
     with labels offset char 1,-0.2 left textcolor rgb 'blue' \
     point linestyle 1 notitle

$0、または同等column(0)の は、座標インデックスです。ステートメントではusing、最初のものだけが有効と見なされ、他のすべてのものはスキップされます ( を使用NaN)。

+を使用するには、固定を設定する必要があることに注意してくださいxrange

これには利点 (または欠点?) があります。

  1. 通常通りご利用いただけますpointtype
  2. 軸の値は座標としてのみ使用できます (firstまたはsecond上記のオブジェクトのように)。
  3. 異なるポイント タイプを配置するのが難しくなる場合があります。
  4. さまざまな境界線と塗りつぶしの色を使用すると、より複雑になります。

結果は次のとおりです。

ここに画像の説明を入力

于 2013-10-18T19:14:16.230 に答える
5

クリストフの優れた回答に追加:

4.stdinワンポイントでパイプに使用

replot "-" using 1:(f($1))
2.0
e

3番目の回答の方法を使用してラベルを付けます。

5. 1 つのポイントを含む名前付きデータブロック (バージョン > 5.0) をベイクすると 、毎回再供給せずに再プロットできます。

$point << EOD
2.0
EOD
replot $point using 1:(f($1)):(sprintf("%.2f",f($1))) with labels
于 2015-08-14T12:34:08.600 に答える