我一直无法从耙文档和演示中找到我要在GNUplot中执行的操作的任何示例。
基本上,我想以10/50/90%的标记在此输出上绘制蓝线,绿线和红线(用于演示)。
编辑:为清楚起见,我想确定分布线在 hit 处的累积分布在0.1 / 0.5 / 0.9处,以了解绘制哪个坐标线在。谢谢!
set terminal png size 1600,800 font "Consolas" 16
set output "test.png"
set title "PDF and CDF - 1000 Simulations"
set grid y2
set ylabel "Date Probability"
set y2range [0:1.00]
set y2tics 0.1
set y2label "Cumulative Distribution"
set xtics rotate by 90 offset 0,-5
set bmargin 6
plot "data.txt" using 1:3:xtic(2) notitle with boxes axes x1y1,'' using 1:4 notitle with linespoints axes x1y2
答案 0 :(得分:1)
尚不清楚您是要询问如何找到累积分布线达到0.1、0.5、0.9的x坐标(很难做到,我暂时将其保留)还是询问如何绘制一次你知道那些x值。后面的部分很容易。将您要绘制的线条想成是矩形的未修剪部分,该部分从图延伸到右下角:
set object 1 rectangle from x1, 0.1 to graph 2, -2 fillstyle empty border lc "blue"
set object 2 rectangle from x2, 0.1 to graph 2, -2 fillstyle empty border lc "green"
set object 3 rectangle from x3, 0.1 to graph 2, -2 fillstyle empty border lc "red"
plot ...
答案 1 :(得分:1)
根据累积数据曲线中的点数,可能需要插值。选择以下示例,以使原始数据点都不会达到您的级别10%,50%,90%。如果您的数据没有稳定增长,它将采用与您的水平相匹配的最后一个值。 步骤如下:
Level
在连续y值(y0
,y1
)之间的时间。xp
中的插值x值。(xp,Level)
绘制箭头(或使用@Ethan的部分外部矩形“技巧”)。 代码:
### linear interpolation of data
reset session
set colorsequence classic
set key left
# create some dummy data
set sample 10
set table $Data
plot [-2:2] '+' u 1:(norm(x)) with table
unset table
Interpolate(yi) = x0 + (x1-x0)*(yi-y0)/(y1-y0)
Levels = "0.1 0.5 0.9"
do for [i=1:words(Levels)] {
Level = word(Levels,i)
x0 = x1 = y0 = y1 = NaN
set table $Dummy
plot $Data u (x0=x1,x1=$1,y0=y1,y1=$2, (y0<=Level && Level<=y1)? (xp=Interpolate(Level)):NaN ): (Level) w table
unset table
set arrow i*2 from xp, graph 0 to xp,Level nohead lc i
set arrow i*2+1 from xp,Level to graph 1,Level nohead lc i
}
plot $Data u 1:2 w lp pt 7 lc 0 t "Original data"
### end code
结果: