gnuplot中数据和线条颜色之间的映射

时间:2017-01-08 16:26:12

标签: gnuplot

我想在gnuplot中创建一个简单的直方图,并希望根据数据调整条形的颜色。目前,我正在努力解决颜色和数据之间的映射问题。 我们说我有以下数据文件:

X, 500.00, 100.00, 1
Y, 600.00, 200.00, 2

我使用以下代码生成直方图:

reset
fontsize = 12
set terminal png
set output "file.png"
set style fill solid 1.00 border 0
set style histogram errorbars gap 2 lw 1
set style data histogram
set xtics rotate by -45
set grid ytics
set xlabel "label"
set ylabel "label"
set yrange [0:*]
set datafile separator ","
plot 'data.dat' using 2:3:4:xtic(1) ti "" lc variable

现在我想在数据的第四列和颜色之间创建一个映射,例如1 - >黄色,2 - >蓝色。 我以为我可以定义类似下面的内容

set style line 1 linecolor rgb "yellow"
set style line 2 linecolor rgb "blue"

但是这段代码不起作用,因为它定义了样式而不是颜色。另一方面,我在文档中读到" rgb变量"仅在3D绘图模式(splot)中可用,所以我认为在这个术语中我的整个方法可能会走错方向。

有谁知道如何实现数据和线条颜色之间的映射?

1 个答案:

答案 0 :(得分:0)

您是否尝试过palette命令?我不久前遇到过同样的问题。我想制作这个情节(这在某些方面你需要的) My histogram 所以我使用直方图列中的元素数来设置该列的颜色。我的数据文件看起来像

#MY_FILE
...
26 0.02302 2302
28 0.02233 2233
30 0.02261 2261
32 0.02383 2383
34 0.02279 2279
36 0.02366 2366
38 0.02226 2226
40 0.02148 2148
...
#EOF

第一行$1 n 参数,第二行$2是我的 pdf (只是直方图标准化)和第三个$3列是 bin 中的出现次数。然后我使用最后一列作为参数,使用命令

为我的图形着色
 set palette model RGB defined (1 "blue", 2 "red")

在起点1和结束2之间创建渐变。然后使用我用线

绘制的调色板
p 'MY_FILE' u 1:2:3 w boxes palette

其中w boxes是生成直方图的命令,而palette(也pal)命令是设置颜色的命令,它使用第3列中指定的颜色u 1:2:3,其中1:2是我的直方图,3是颜色渐变。 如果您不想要横向条纹(热图),只需输入 gnuplot

unset colorbox

以下是 gnuplot 中有关palette命令的一些文档:

  1. http://gnuplot.sourceforge.net/demo_5.0/pm3dcolors.html
  2. gnuplot
  3. 上输入help palette
  4. 可能特别有用http://www.gnuplotting.org/defining-a-palette-with-discrete-colors/