我想使用gnuplot创建一个条形图,其中包含第3列的值,第2列的xtic标签和我的数据文件的第4列的颜色。该文件看起来像:
0 "13 Sep" 2400.18 "blue"
1 "13 Oct" 440.86 "blue"
2 "13 Nov" 867.03 "blue"
3 "13 Dec" -247.32 "red"
4 "14 Jan" -3457.56 "red"
5 "14 Feb" 666.94 "blue"
目前,我使用以下命令进行绘图,
plot "output.txt" using 1:3:xtic(2) with boxes
并且图表在x轴上具有正确的tic标签,并且所有条纹都是红色的。我想做什么来从文件中获取条形颜色,或者从蓝色到红色,通过白色的光滑调色板。
我尝试过很多不同的建议,我发现在互联网上搜索但没有成功。我该怎么办?
答案 0 :(得分:0)
要根据您的数据选择线条颜色,您可以使用linecolor variable
。在这种情况下,您必须将行类型索引作为附加列。
您的数据文件有点多余。您不需要拥有第一列,您始终可以访问行号column(0)
。颜色可以从值符号中获得:
"13 Sep" 2400.18
"13 Oct" 440.86
"13 Nov" 867.03
"13 Dec" -247.32
"14 Jan" -3457.56
"14 Feb" 666.94
脚本是:
set style fill solid noborder
set xzeroaxis lt -1 lw 2
set boxwidth 0.9 relative
plot "output.txt" using 0:2:($2 < 0 ? 1 : 3):xtic(1) with boxes linecolor variable t ''
结果(版本4.6.3):
您还可以使用linecolor rgb variable
,linecolor palette
等
如果您希望根据红色/蓝色和白色的混合颜色对其进行着色,可以按照以下方式进行:
set style fill solid border lt -1
set xzeroaxis lt -1 lw 2
set boxwidth 0.9 relative
unset key
stats "output.txt" using 2 nooutput
set palette defined (STATS_min 'red', 0 'white', STATS_max 'blue')
set autoscale cbfix
plot "output.txt" using 0:2:2:xtic(1) with boxes linecolor palette
结果:
在框内获得渐变更为复杂,需要一些技巧,请参阅Gnuplot vertical gradient on boxes depending of a value?。