我想在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)中可用,所以我认为在这个术语中我的整个方法可能会走错方向。
有谁知道如何实现数据和线条颜色之间的映射?
答案 0 :(得分:0)
您是否尝试过palette
命令?我不久前遇到过同样的问题。我想制作这个情节(这在某些方面你需要的)
所以我使用直方图列中的元素数来设置该列的颜色。我的数据文件看起来像
#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
命令的一些文档:
help palette