我想用方框绘制一个类似于直方图的图表,其中条形图有不同的颜色。
这是我的数据:
stage 11402.364 100% 1
App1 78.552 0.69% 2
App2 11323.812 99.30% 2
Read 8.469 0.07% 3
Write 41.285 0.04% 3
Repeat 5748.351 50.41% 3
Count 4933.746 43.27% 3
Count_1 3841.355 33.69% 4
Count_2 1092.391 9.59% 4
但我发现lc rgb variable
对我不起作用。目前,我正在使用gnuplot4.2。在4.2中,用于版本4.2的第三个数字是boxwidth而不是box color。
但我尝试了以下方法。由于我只需要4种颜色,因此我尝试使用以下代码手动绘制不同的颜色条:
set boxwidth 0.5 relative
set style fill solid 0.5
set xtics rotate
plot 'histogramdata_2.txt' using ($4 == 1 ? $0 : 1/0):2:xtic(1) with boxes lc 1 , \
'' using ($4 == 2 ? $0 : 1/0):2:xtic(1) with boxes lc 2 , \
'' using ($4 == 3 ? $0 : 1/0):2:xtic(1) with boxes lc 3 , \
'' using ($4 == 4 ? $0 : 1/0):2:xtic(1) with boxes lc 4
这就是我得到的,这几乎是我想要的:
但为什么第一列的第一栏是1呢?我已经调整了一段时间,但感到困惑。需要一些帮助。
我认为最好在这里发布一个新问题,因为它与原始问题略有不同。
答案 0 :(得分:1)
这是一个错误,已在4.6.4或4.6.5中修复。我使用您的脚本和数据集玩了一下:当只绘制一个框并且与特定using
过滤无关时,会出现此错误。其他一些情况:
当我从数据文件中删除“App2”行时,即lc 1和lc 2都只有一行,那么前两个框根本没有绘制。
当我只用
打印一个方框时plot 'histogramdata_2.txt' using 0:2:xtic(1) every ::::0 with boxes
我的第一个框也错了
使用awk
进行外部过滤时相同:
set boxwidth 0.5 relative
set style fill solid 0.5
set xtics rotate
awk(c, f) = sprintf("awk '{ if ($4 == %d) { print NR, $0 } }' %s", c, f)
file = 'histogramdata_2.txt'
set style data boxes
plot '< '.awk(1, file) using 1:3:xtic(2), \
'< '.awk(2, file) using 1:3:xtic(2), \
'< '.awk(3, file) using 1:3:xtic(2), \
'< '.awk(4, file) using 1:3:xtic(2)
不,我没有找到解决方法(我也试过包含一些虚拟值并使用适当的set xrange
跳过它们,但这不起作用)。