来自数据文件的颜色和xtic的Gnuplot

时间:2014-03-01 12:57:57

标签: colors gnuplot labels

我想使用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标签,并且所有条纹都是红色的。我想做什么来从文件中获取条形颜色,或者从蓝色到红色,通过白色的光滑调色板。

我尝试过很多不同的建议,我发现在互联网上搜索但没有成功。我该怎么办?

1 个答案:

答案 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):

enter image description here

您还可以使用linecolor rgb variablelinecolor 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

结果:

enter image description here

在框内获得渐变更为复杂,需要一些技巧,请参阅Gnuplot vertical gradient on boxes depending of a value?