Gnuplot 格式转换,字节
Gnuplot format converting, bytes
例如,我有大量的字节,其中一些等于千兆字节。
当前格式设置 set format y "%.2s%cb
这样做:
1.20G
1.00G
800.00M
600.00M
.....
0
我需要把ytics转换成只显示三位数的方式,or/and主要是一个科学幂:
1.00G
0.80G
0.60G
....
0
我该怎么做?
那你就不能使用gnuplot的自动格式化了。如果您知道数据必须以千兆字节为单位显示,则使用
set format y "%.2fG"
plot 'data.dat' using 1:(/1e9)
这假定第二列中的数据以字节为单位。
如果要坚持最大的科学幂,可以先用stats
确定最大值,然后计算科学幂:
stats 'data.dat' using 2 nooutput
scientific_power_index = ceil(log10(STATS_max)/3)
scientific_power = word("'' k M G T", scientific_power_index)
scale = 10**((scientific_power_index - 1) * -3)
set format y "%.2f".scientific_power
plot 'data.dat' using 1:( * scale)
请注意,这仅适用于 gnuplot 5,如果最大 y 值具有与自动缩放的最大 y 值不同的科学功效(例如最大值 990e6 -> 自动缩放),则它无法正常工作需要 1e9,但上面的代码仍然会给出 'M' 作为科学幂)。
例如,我有大量的字节,其中一些等于千兆字节。
当前格式设置 set format y "%.2s%cb
这样做:
1.20G
1.00G
800.00M
600.00M
.....
0
我需要把ytics转换成只显示三位数的方式,or/and主要是一个科学幂:
1.00G
0.80G
0.60G
....
0
我该怎么做?
那你就不能使用gnuplot的自动格式化了。如果您知道数据必须以千兆字节为单位显示,则使用
set format y "%.2fG"
plot 'data.dat' using 1:(/1e9)
这假定第二列中的数据以字节为单位。
如果要坚持最大的科学幂,可以先用stats
确定最大值,然后计算科学幂:
stats 'data.dat' using 2 nooutput
scientific_power_index = ceil(log10(STATS_max)/3)
scientific_power = word("'' k M G T", scientific_power_index)
scale = 10**((scientific_power_index - 1) * -3)
set format y "%.2f".scientific_power
plot 'data.dat' using 1:( * scale)
请注意,这仅适用于 gnuplot 5,如果最大 y 值具有与自动缩放的最大 y 值不同的科学功效(例如最大值 990e6 -> 自动缩放),则它无法正常工作需要 1e9,但上面的代码仍然会给出 'M' 作为科学幂)。