我正在绘制大量的条形图,因此我只标记每个第n个xtic(如.dat文件中所示"")。以下是我输入的前15行" .dat"文件:
1 150
" " 260
" " 340
" " 410
5 270
" " 280
" " 260
" " 370
" " 220
10 230
" " 340
" " 300
" " 200
" " 240
15 160
绘制此数据的效果很好。但是,在我的实际.dat文件中,我有大约500k的值(500k框)。因此,我想为每个10k的盒子涂上一定的颜色(或者在上面的例子中,每隔5个颜色)。这是使用的代码:
set terminal postscript eps color
set output "genetic.eps"
set ylabel "Number of Exons"
set style fill solid 1.0 noborder
plot "genes.dat" using 2:xticlabels(1) smooth frequency with boxes notitle
谢谢!
答案 0 :(得分:2)
试试这个
set ylabel "Number of Exons"
set style fill solid 1.0 noborder
plot "test" using ($0+1):($2) w boxes lc 'blue' t '',\
'test' u (($0*5)+5):($2):(1) every 5::4 w boxes lc 'red' t ''
$ 0代表行号(从0开始)
every 5::4
代表every 5th line starting after line 4
当我们不使用每一条线时,我们必须防止条在整个宽度上伸展。我们可以通过提供第三个坐标来实现:x宽度:(1)
答案 1 :(得分:2)
在你的情况下,平滑的频率实际上并没有做任何事情(只有在多个点具有相同的x坐标时才有效,但是如果没有指定一个,则默认使用行号)。
我们可以获得平滑频率选项的干扰并使用可变线条颜色。如果我们希望将每个第5个框设置为红色,而将其他框设置为蓝色,则可以执行
plot "genes.dat" u 0:2:(int($0)%5==0?(255<<16):255):xticlabels(1) with boxes lc rgbcolor variable
在绘图规范中,我们使用
(int($0)%5==0?(255<<16):255)
xticlabels(1)
- xtic标签 lc rgbcolor variable
表示使用rgbcolor值(基于第三列的RRGGBB格式的24位整数)设置线条颜色。
有关详细信息,请参阅help linecolor
。
在提供的示例中,我首先运行set yrange[0:*]
以避免从第一个框中删除默认的yrange值计算。
行号从0开始,0可以被5整除,第一个框为红色,第六个为红色,依此类推。如果我们希望将第5个,第10个等框设置为红色,请在plot命令的颜色规范中使用int($0+1)
。
注意:这一切都适用于gnuplot 5.早期版本不支持位移,因此我们必须将shift表达式替换为计算的实际结果,在本例中为16711680。 / p>