我希望你能提供帮助(我会提前找借口:我是gnuplot的新手,这不是我的专业领域!)
我使用gnuplot生成下载速度的图表。 我想将值绘制为条形图并按速度为列着色:绿色高于190Mb / s,红色低于50,橙色表示中间值
我已经取得了部分成功:Color bars in different colors for some specific values in Gnuplot
我想要它的情节 MB / s值超过190为绿色 MB / s在50和190之间为橙色 MB / s值低于50为红色
只要我在集合中至少有一个小于50的值,它就会很好,但如果没有小于50的值,则将所有小于190的值绘制为红色,当它们应为橙色时
它应该如何显示(值小于50) GOOD IMAGE
实际看起来没有小于50的值 BAD IMAGE
这是我使用的gnuplot脚本(可能存在多余的表达 - 我已经非常多地使用它了)
#!/usr/bin/gnuplot
reset
set terminal png transparent truecolor
set xdata time
set timefmt "%Y-%m-%d, %H:%M"
set format x "%H"
set key off
#set xtics rotate
set xtics font "ubuntumono,6" textcolor rgb "white"
set xtics 3600
set ylabel "Mbit/s" font "ubuntu,8" offset 3,0,0 textcolor rgb "white"
set ytics font "ubuntu,8" textcolor rgb "white"
set yrange [0:*]
set y2range [0:40]
set grid ytics
set term png size 400, 135
set style data boxes
set boxwidth 3500 absolute
set style fill transparent solid 0.9 border rgb "black"
set palette model RGB defined (0 "red", 1 "orange", 2 "green")
set bmargin at screen 0
set lmargin 5
set rmargin 0.7
set tmargin 1
unset colorbox
set x2tics font "ubuntu,7" textcolor rgb "white"
set x2tics 43200, 43200, time(0)-21600 offset 0,-0.5,0
set x2data time
set format x2 "%a %H:%M"
unset border
plot 'test.dat' using (timecolumn(1)):4:($4>=190 ? 2 : $4>=50 ? 1 : 0) with boxes palette, \
这是数据文件的示例
2016-03-02, 05:40, 20.373, 200.72, 12.02,
2016-03-02, 06:40, 21.749, 20.80, 12.01,
2016-03-02, 07:40, 20.72, 191.67, 11.99,
2016-03-02, 08:40, 20.12, 201.50, 11.98,
2016-03-02, 09:40, 20.153, 205.32, 11.92,
2016-03-02, 10:40, 21.361, 172.91, 11.97,
2016-03-02, 11:40, 20.402, 201.52, 11.98,
这是令人讨厌的表达:($4>=190 ? 2 : $4>=50 ? 1 : 0)
我认为这应该评价为:190以上;绿色,其他50多个;橙色,任何红色的东西
我也尝试过:(timecolumn(1)):4:($4<=50 ? 0 : $4<=190 ? 1 : 2)
但是会得到相同的结果
我确定我犯了一个基本错误,但我会非常感激一些帮助 谢谢!
答案 0 :(得分:1)
自动调整的颜色范围(cbrange
)取决于您的输入数据,调色板定义中给出的值与该范围有关。
使用固定范围:
set cbrange [0:2]
由于您只有三个离散颜色值,因此也可以使用linecolor variable
,例如Different coloured bars in gnuplot bar chart