每个基数

时间:2015-04-22 14:14:39

标签: gnuplot

我正在使用gnuplot绘制测量数据,我想专注于较小的x值。 x介于0和65之间,但最有趣的事情发生在x = 0和x = 1之间。所以我使用logscale。

但我选择的每个基地看起来都一样:

f(x) = x**2

p(l) = (1-(l/100))**2
e(l) = p(l)**50
g(l) = e(l)*1000*100

set key bottom left


set xtics ("0" 0.001, 0.01, 0.05, 0.1, 0.2, 0.3, 0.5, 0.7, 1, 2, 5, 10, 15, 25, 40, 50, 60)
set yrange [0:f(100.5)]
set xlabel "loss rate in %"
set ylabel "successful requests (100% of expected results) in %"

set ytics ("0" f(0), "50" f(50), "75" f(75), "80" f(80), "90" f(90), "100" f(100))

set logscale x 10

plot "collected_$intv.table" using 1:(f(\$2/10))  title "maximum 1 try" lc rgb "red" pt 1 lw 1, \
     "collected_$intv.table" using 1:(f(\$2/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$3/10))  title "maximum 2 tries" lc rgb "blue" pt 2 lw 1, \
     "collected_$intv.table" using 1:(f(\$3/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$4/10))  title "maximum 3 tries" lc rgb "green" pt 3 lw 1, \
     "collected_$intv.table" using 1:(f(\$4/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$5/10))  title "maximum 4 tries" lc rgb "black" pt 5 lw 1, \
     "collected_$intv.table" using 1:(f(\$5/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$6/10))  title "maximum 5 tries" lc rgb "red" pt 7 lw 1, \
     "collected_$intv.table" using 1:(f(\$6/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$7/10))  title "maximum 6 tries" lc rgb "blue" pt 9 lw 1, \
     "collected_$intv.table" using 1:(f(\$7/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$8/10))  title "maximum 7 tries" lc rgb "green" pt 13 lw 1, \
     "collected_$intv.table" using 1:(f(\$8/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$9/10))  title "maximum 8 tries" lc rgb "black" pt 17 lw 1, \
     "collected_$intv.table" using 1:(f(\$9/10))  notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$10/10)) title "maximum 9 tries" lc rgb "red" pt 19 lw 1, \
     "collected_$intv.table" using 1:(f(\$10/10)) notitle w lines  ls 27, \
     "collected_$intv.table" using 1:(f(\$11/10)) title "maximum 10 tries" lc rgb "blue" pt 12 lw 1, \
     "collected_$intv.table" using 1:(f(\$11/10)) notitle w lines  ls 27, \
     g(x)/10 title "calculated probability for 1 try"

gnuplot screenshot

我想要的是:x = 0.01应该更接近x = 0并且x = 0.05应该更接近x = 0.01,依此类推。但增加x之间的距离应随着x的增长而减小(这就是我使用对数刻度的原因)

奇怪的是,当我使用

set logscale x 2

set logscale x 100
它看起来完全一样!

如何获得所需的结果?

1 个答案:

答案 0 :(得分:3)

难怪它总是看起来一样。切换到日志比例意味着将日志功能(默认情况下为10)应用于原始数据:

x_toPlot = log_10( x_data )

如果选择任意碱基,则使用对数定律进行标准碱基转换:

x_toPlot = log_b( x_data ) =  log_10( x_data ) / log_10( b )

唯一的区别是因子1 / log_10( b ),因此您的数据只是在不改变点相对于彼此的相对位置的情况下被拉伸。由于gnuplot应用另一个因素来将数据拟合到图表中,因此您不会注意到任何明显的差异。

唯一受指定日志刻度的任意基数影响的是刻度线,它从1,10,100,...,10 n 变为1,b ,b²,... b n

您只能尝试其他轴转换。你对x的位置有所了解吗...例如y = 75%取决于尝试次数?反向函数将是您自己转换的一个很好的候选者。如何实现,I already wrote, well, you!

如上所述,非常难以正确解释非线性轴,不要过多使用

最后,你的情节看起来并不那么糟糕。我会将概率函数(蓝色)拟合到每个数据集,并绘制其x位置与第二个图中的尝试次数。