Gnuplot从数据行读取RGB设置标签颜色失败问题排查
问题
我有一组存储在test.dat文件中的数据:
643.8 0.09417 28.9 00 24 255 0 483.1 0.09232 28.0 01 255 0 120 518.5 0.08943 29.6 02 11 65 255
我想要绘制一张3D图,用前三列作为x、y、z坐标,第四列作为标签内容,标签颜色采用第5、6、7列提供的RGB值。我尝试了以下gnuplot代码:
rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b) splot "test.dat" u 1:2:3:4:(rgb($5/255,$6/255,$7/255)) with labels tc rgb variable notitle
但标签始终显示为黑色(X11窗口中三个标签全是黑色,不是预期的RGB颜色),请问哪里操作错了?
解决方法
问题出在rgb()函数的参数处理上:
- gnuplot的
rgb()函数要求输入0-255范围的整数,但你把数据中的RGB值除以了255,得到的是小于1的小数,经过int()处理后全部变成0,最终计算出的颜色值为0(对应黑色)。
修正后的代码如下:
rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b) splot "test.dat" u 1:2:3:4:(rgb($5,$6,$7)) with labels tc rgb variable notitle
补充说明:如果你的RGB数据是0-1范围的小数,才需要先乘以255再取整,但你的数据本身就是0-255的整数,直接传入函数即可正常显示对应颜色。
内容的提问来源于stack exchange,提问作者Raphael J.F. Berger
相关产品推荐
相关产品推荐

