Gnuplot - 绘制矩阵并用数字替换正方形
Gnuplot - graphing a matrix and replacing the squares with figures
我正在使用 gnuplot 使用以下代码从数据集中绘制 80x80 矩阵:
set terminal png
set output "Matrix.png"
set title "Matrix"
set autoscale xfix
set autoscale yfix
set palette define (0 "black", 1 "red", 2 "blue", 3 "yellow", 4 "gold", 5 "green")
set cbrange [0:5]
plot "Lattice.txt" matrix with image
现在我需要做两个修改,第一个是把它变成灰度,我想我可以通过用 set palette gray
替换调色板来做到这一点
第二个想法是用数字替换每个方块,或者在方块中显示数字。图形喜欢三角形、十字、圆形。
有没有办法用每个符号定义每个数字,就像我以前用调色板颜色做的那样?
谢谢。
如果我没有正确理解你的问题,你可以对变量点类型做同样的事情。检查 help points
。在 gnuplot 控制台中键入 test
,您将看到可用的点类型。下面的示例仍然使用调色板,因为它看起来更好。
代码:
### variable pointtype
reset session
set size square
# create some random test data
set print $Data
do for [y=1:15] {
Line = ''
do for [x=1:15] {
Line = Line.sprintf(" %d", int(rand(0)*6))
}
print Line
}
set print
set palette define (0 "black", 1 "red", 2 "blue", 3 "yellow", 4 "gold", 5 "green")
myPointtypes = "2 5 7 9 11 13"
myPointtype(col) = int(word(myPointtypes,int(column(col))+1))
set offsets 0.5,0.5,0.5,0.5
plot $Data u 1:2:(myPointtype(3)):3 matrix w p pt var lc palette notitle
### end of code
结果:
我正在使用 gnuplot 使用以下代码从数据集中绘制 80x80 矩阵:
set terminal png
set output "Matrix.png"
set title "Matrix"
set autoscale xfix
set autoscale yfix
set palette define (0 "black", 1 "red", 2 "blue", 3 "yellow", 4 "gold", 5 "green")
set cbrange [0:5]
plot "Lattice.txt" matrix with image
现在我需要做两个修改,第一个是把它变成灰度,我想我可以通过用 set palette gray
第二个想法是用数字替换每个方块,或者在方块中显示数字。图形喜欢三角形、十字、圆形。
有没有办法用每个符号定义每个数字,就像我以前用调色板颜色做的那样?
谢谢。
如果我没有正确理解你的问题,你可以对变量点类型做同样的事情。检查 help points
。在 gnuplot 控制台中键入 test
,您将看到可用的点类型。下面的示例仍然使用调色板,因为它看起来更好。
代码:
### variable pointtype
reset session
set size square
# create some random test data
set print $Data
do for [y=1:15] {
Line = ''
do for [x=1:15] {
Line = Line.sprintf(" %d", int(rand(0)*6))
}
print Line
}
set print
set palette define (0 "black", 1 "red", 2 "blue", 3 "yellow", 4 "gold", 5 "green")
myPointtypes = "2 5 7 9 11 13"
myPointtype(col) = int(word(myPointtypes,int(column(col))+1))
set offsets 0.5,0.5,0.5,0.5
plot $Data u 1:2:(myPointtype(3)):3 matrix w p pt var lc palette notitle
### end of code
结果: