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

结果: