Gnuplot绘制矩阵时设置灰度调色板及替换方块为自定义符号的方法咨询
灰度模式修改
你的思路完全正确,直接替换原调色板定义语句为set palette gray即可,保留set cbrange [0:5]的前提下,数值0会映射为纯黑,5映射为纯白,正好匹配你的数值范围。
数值对应自定义符号实现
可以实现你要的自定义映射效果,gnuplot中通过pointtype(可缩写为pt)控制点样式,配合三元条件判断就可以给不同数值分配对应符号。常用内置点样式参考:
- 十字:
pt 1 - 叉号:
pt 2 - 正方形:
pt 5 - 圆形:
pt 6 - 上三角:
pt 7 - 下三角:
pt 9
方案1:保留灰度色块,在色块中心叠加对应符号
适合需要同时保留灰度数值信息和符号区分的场景,示例代码如下:
set terminal png set output "Matrix.png" set title "Matrix" set autoscale xfix set autoscale yfix set palette gray set cbrange [0:5] # 预先定义符号映射,修改更方便 pt0 = 1 # 数值0对应十字 pt1 = 6 # 数值1对应圆形 pt2 = 7 # 数值2对应上三角 pt3 = 9 # 数值3对应下三角 pt4 = 5 # 数值4对应正方形 pt5 = 2 # 数值5对应叉号 plot "Lattice.txt" matrix with image notitle, \ "" matrix using 1:2:( $3 == 0 ? pt0 : $3 == 1 ? pt1 : $3 == 2 ? pt2 : $3 == 3 ? pt3 : $3 == 4 ? pt4 : pt5 ) \ pointtype variable pointsize 2 linecolor "white" notitle
你可以自行调整pointsize参数修改符号大小,修改linecolor调整符号颜色。
方案2:完全替换色块为符号,用灰度区分符号颜色
适合不需要色块、仅用符号+灰度表达信息的场景,示例代码如下:
set terminal png set output "Matrix.png" set title "Matrix" set xrange [-0.5:79.5] set yrange [-0.5:79.5] set palette gray set cbrange [0:5] pt0 = 1 pt1 = 6 pt2 = 7 pt3 = 9 pt4 = 5 pt5 = 2 plot "Lattice.txt" matrix using 1:2:3:( $3 == 0 ? pt0 : $3 == 1 ? pt1 : $3 == 2 ? pt2 : $3 == 3 ? pt3 : $3 == 4 ? pt4 : pt5 ) \ pointtype variable pointsize 2 linecolor palette notitle
内容的提问来源于stack exchange,提问作者Ovog
相关产品推荐
相关产品推荐

