pm3d 地图中缺少 y2tics 和 y2label
y2tics and y2label missing in the pm3d map
我正在尝试使用 gnuplot(版本 5.2 补丁级别 8)的主轴和次轴绘制 pm3d 地图。但是,缺少 y2label 并且 y2tics 在三个标记后没有出现。如果有人能指出我犯的任何错误,那将非常有帮助。下面给出了使用的脚本,附上得到的图给你reference.Thank你提前
set term postscript
set output "map.ps"
set pm3d map corners2color c1
set palette maxcolors 8
set palette defined (0 "#FFFFFF", 1 "#FFFF00", 2 "#FFC020", 3 "#FF69B4", 4 "#4169E1", 5 "#008000", 6 "#20B2AA", 7 "#9ACD32")
set lmargin at screen 0.095
set rmargin at screen 0.795
unset key
# set x-axis
#*******************************************************
set xlabel "Time (ns)" font "Times-italic,18" offset 0, -0.5, 0
set xrange [0.000: 7500.000]
set xtics ("0" 0.000, "50" 1250.0, "100" 2500.0, "150" 3750.0, "200" 5000.0, "250" 6250.0, "300" 7500.0) font "Times-italic,16"
# set y-axis
#*******************************************************
set ylabel "Peptide Number" font "Times-italic,18" offset -1.2, 1, 0
set yrange [2.0: 36.0]
set ytics ("1" 5.0, "2" 12.0, "3" 19.0, "4" 26.0, "5" 33.0) font "Times-italic,16"
set ytics nomirror
set y2label "Residue Number" font "Times-italic,18" offset -2.5, 0, 0
set y2range [2.0: 36.0]
set y2tics nomirror ("1" 2.0, "7" 8.0, "1" 9.0 , "7" 15.0, "1" 16.0, "7" 22.0, "1" 23.0, "7" 29.0, "1" 30.0, "7" 36.0) font "Times-italic,14"
# set cb-axis
#*******************************************************
set colorbox vertical user origin 0.890, .147 size .04, .73
set cbrange [-0.500: 7.500]
set cbtics 0.000, 7.000, 1.0
set cbtics("None" 0.000,"Ext" 1.000,"Bridge" 2.000,"3-10" 3.000,"Alpha" 4.000,"Pi" 5.000,"Turn" 6.000,"Bend" 7.000)
set link y2
splot "-" with pm3d title "map.gnu"
1.000 1.000 2
1.000 2.000 0
1.000 3.000 0
1.000 4.000 0
1.000 5.000 0
1.000 6.000 3
1.000 7.000 0
1.000 8.000 0
1.000 9.000 0
1.000 10.000 0
1.000 11.000 0
1.000 12.000 0
1.000 13.000 0
1.000 14.000 1
1.000 15.000 0
1.000 16.000 0
1.000 17.000 6
1.000 18.000 0
1.000 19.000 7
1.000 20.000 0
1.000 21.000 0
1.000 22.000 4
1.000 23.000 0
1.000 24.000 0
1.000 25.000 6
1.000 26.000 6
1.000 27.000 5
1.000 28.000 0
1.000 29.000 0
1.000 30.000 4
1.000 31.000 0
1.000 32.000 0
1.000 33.000 7
1.000 34.000 0
1.000 35.000 0
1.000 36.000 0
2.000 1.000 0
2.000 2.000 0
2.000 3.000 0
2.000 4.000 2
2.000 5.000 4
2.000 6.000 5
2.000 7.000 0
2.000 8.000 0
2.000 9.000 6
2.000 10.000 0
2.000 11.000 0
2.000 12.000 0
2.000 13.000 7
2.000 14.000 0
2.000 15.000 0
2.000 16.000 0
2.000 17.000 0
2.000 18.000 0
2.000 19.000 8
2.000 20.000 0
2.000 21.000 0
2.000 22.000 0
2.000 23.000 0
2.000 24.000 9
2.000 25.000 6
2.000 26.000 6
2.000 27.000 6
2.000 28.000 0
2.000 29.000 5
2.000 30.000 0
2.000 31.000 0
2.000 32.000 0
2.000 33.000 7
2.000 34.000 0
2.000 35.000 0
2.000 36.000 0
我不知道为什么默认的 link 命令 set link y2
会失败,但如果您明确给出更长的形式 set link y2 via y inv y
.
,它似乎可以工作
除此之外,请注意 set link y2
命令将立即用匹配 y1
范围的限制替换 y2range
上的任何限制,因此脚本中的 set y2range
命令如图所示没有效果。
我从你的代码中假设你有简单的 x,y,z
数据。
x
样本编号从 0 到 7500,对应于 0 到 300 ns。
y
范围从 1 到 6
z
范围从 0 到 7
对于下面的示例,我创建了一些随机测试数据。
我可以用 splot ... with pm3d
重现您的问题,但是,(还)没有解决方案。
因此,我的建议是使用plot ... with boxxerror
。
如果您绘制那么多方框,您的 PostScript 文件可能会变得非常大。因此,我建议使用具有足够分辨率的像素图形,例如set term pngacairo size 1400,1000
.
代码:
### "plot ... with boxxyerror" instead of "splot ... with pm3d"
reset session
set palette maxcolors 8
set palette defined (0 "#FFFFFF", 1 "#FFFF00", 2 "#FFC020", 3 "#FF69B4", 4 "#4169E1", 5 "#008000", 6 "#20B2AA", 7 "#9ACD32")
# create some random test data
set print $Data
do for [i=1:7500] for [j=1:5] {
print sprintf("%g %g %g", i, int(rand(0)*6)+(j-1)*7+2, int(rand(0)*8))
}
set print
set xrange [0:300]
XScale = 300/7500. # scaling between sample and x-axis units
set yrange [1: 37]
set for [i=1:5] ytics (sprintf("%g",i) i*7-2)
set ytics nomirror
set y2range [1: 37]
set for [i=1:5] y2tics ("1" i*7-5, "7" i*7+1)
set y2tics nomirror
set link y2
set cbrange [-0.500: 7.500]
set cbtics 0.000, 7.000, 1.0
myCbTics = "None Ext Bridge 3-10 Alpha Pi Turn Bend"
set for [i=0:words(myCbTics)] cbtics (word(myCbTics,i+1) i)
set key noautotitle
set tics out
set style fill solid 1.0
plot $Data u (*XScale):2:(*XScale):((+1)*XScale):():(+1):3 w boxxy palette z
### end of code
结果:
我正在尝试使用 gnuplot(版本 5.2 补丁级别 8)的主轴和次轴绘制 pm3d 地图。但是,缺少 y2label 并且 y2tics 在三个标记后没有出现。如果有人能指出我犯的任何错误,那将非常有帮助。下面给出了使用的脚本,附上得到的图给你reference.Thank你提前
set term postscript
set output "map.ps"
set pm3d map corners2color c1
set palette maxcolors 8
set palette defined (0 "#FFFFFF", 1 "#FFFF00", 2 "#FFC020", 3 "#FF69B4", 4 "#4169E1", 5 "#008000", 6 "#20B2AA", 7 "#9ACD32")
set lmargin at screen 0.095
set rmargin at screen 0.795
unset key
# set x-axis
#*******************************************************
set xlabel "Time (ns)" font "Times-italic,18" offset 0, -0.5, 0
set xrange [0.000: 7500.000]
set xtics ("0" 0.000, "50" 1250.0, "100" 2500.0, "150" 3750.0, "200" 5000.0, "250" 6250.0, "300" 7500.0) font "Times-italic,16"
# set y-axis
#*******************************************************
set ylabel "Peptide Number" font "Times-italic,18" offset -1.2, 1, 0
set yrange [2.0: 36.0]
set ytics ("1" 5.0, "2" 12.0, "3" 19.0, "4" 26.0, "5" 33.0) font "Times-italic,16"
set ytics nomirror
set y2label "Residue Number" font "Times-italic,18" offset -2.5, 0, 0
set y2range [2.0: 36.0]
set y2tics nomirror ("1" 2.0, "7" 8.0, "1" 9.0 , "7" 15.0, "1" 16.0, "7" 22.0, "1" 23.0, "7" 29.0, "1" 30.0, "7" 36.0) font "Times-italic,14"
# set cb-axis
#*******************************************************
set colorbox vertical user origin 0.890, .147 size .04, .73
set cbrange [-0.500: 7.500]
set cbtics 0.000, 7.000, 1.0
set cbtics("None" 0.000,"Ext" 1.000,"Bridge" 2.000,"3-10" 3.000,"Alpha" 4.000,"Pi" 5.000,"Turn" 6.000,"Bend" 7.000)
set link y2
splot "-" with pm3d title "map.gnu"
1.000 1.000 2 1.000 2.000 0 1.000 3.000 0 1.000 4.000 0 1.000 5.000 0 1.000 6.000 3 1.000 7.000 0 1.000 8.000 0 1.000 9.000 0 1.000 10.000 0 1.000 11.000 0 1.000 12.000 0 1.000 13.000 0 1.000 14.000 1 1.000 15.000 0 1.000 16.000 0 1.000 17.000 6 1.000 18.000 0 1.000 19.000 7 1.000 20.000 0 1.000 21.000 0 1.000 22.000 4 1.000 23.000 0 1.000 24.000 0 1.000 25.000 6 1.000 26.000 6 1.000 27.000 5 1.000 28.000 0 1.000 29.000 0 1.000 30.000 4 1.000 31.000 0 1.000 32.000 0 1.000 33.000 7 1.000 34.000 0 1.000 35.000 0 1.000 36.000 0
2.000 1.000 0 2.000 2.000 0 2.000 3.000 0 2.000 4.000 2 2.000 5.000 4 2.000 6.000 5 2.000 7.000 0 2.000 8.000 0 2.000 9.000 6 2.000 10.000 0 2.000 11.000 0 2.000 12.000 0 2.000 13.000 7 2.000 14.000 0 2.000 15.000 0 2.000 16.000 0 2.000 17.000 0 2.000 18.000 0 2.000 19.000 8 2.000 20.000 0 2.000 21.000 0 2.000 22.000 0 2.000 23.000 0 2.000 24.000 9 2.000 25.000 6 2.000 26.000 6 2.000 27.000 6 2.000 28.000 0 2.000 29.000 5 2.000 30.000 0 2.000 31.000 0 2.000 32.000 0 2.000 33.000 7 2.000 34.000 0 2.000 35.000 0 2.000 36.000 0
我不知道为什么默认的 link 命令 set link y2
会失败,但如果您明确给出更长的形式 set link y2 via y inv y
.
除此之外,请注意 set link y2
命令将立即用匹配 y1
范围的限制替换 y2range
上的任何限制,因此脚本中的 set y2range
命令如图所示没有效果。
我从你的代码中假设你有简单的 x,y,z
数据。
x
样本编号从 0 到 7500,对应于 0 到 300 ns。y
范围从 1 到 6z
范围从 0 到 7
对于下面的示例,我创建了一些随机测试数据。
我可以用 splot ... with pm3d
重现您的问题,但是,(还)没有解决方案。
因此,我的建议是使用plot ... with boxxerror
。
如果您绘制那么多方框,您的 PostScript 文件可能会变得非常大。因此,我建议使用具有足够分辨率的像素图形,例如set term pngacairo size 1400,1000
.
代码:
### "plot ... with boxxyerror" instead of "splot ... with pm3d"
reset session
set palette maxcolors 8
set palette defined (0 "#FFFFFF", 1 "#FFFF00", 2 "#FFC020", 3 "#FF69B4", 4 "#4169E1", 5 "#008000", 6 "#20B2AA", 7 "#9ACD32")
# create some random test data
set print $Data
do for [i=1:7500] for [j=1:5] {
print sprintf("%g %g %g", i, int(rand(0)*6)+(j-1)*7+2, int(rand(0)*8))
}
set print
set xrange [0:300]
XScale = 300/7500. # scaling between sample and x-axis units
set yrange [1: 37]
set for [i=1:5] ytics (sprintf("%g",i) i*7-2)
set ytics nomirror
set y2range [1: 37]
set for [i=1:5] y2tics ("1" i*7-5, "7" i*7+1)
set y2tics nomirror
set link y2
set cbrange [-0.500: 7.500]
set cbtics 0.000, 7.000, 1.0
myCbTics = "None Ext Bridge 3-10 Alpha Pi Turn Bend"
set for [i=0:words(myCbTics)] cbtics (word(myCbTics,i+1) i)
set key noautotitle
set tics out
set style fill solid 1.0
plot $Data u (*XScale):2:(*XScale):((+1)*XScale):():(+1):3 w boxxy palette z
### end of code
结果: