如何解决如何将轮廓线添加到热图
我有一个脚本,该脚本用于获取数据(格式为x,y,z
的3列)并提供热图:
set logscale x 10
set yrange [1e-9:2e-8]
set xlabel "x"
set ylabel "y"
set multiplot
plot 'filetest.dat' u 1:2:9 with image
这是2D热图,如下所示:
我要做的就是以2个间隔的z值(例如-20到-8)将轮廓添加到此绘图中,不幸的是,我没有找到任何答案可以帮助我。任何帮助将不胜感激。
解决方法
尽管www.gnuplot.info上有很多关于轮廓的示例,但我找不到您的确切情况,因为这些示例是函数而不是数据块或数据文件的(嗯,应该相似)。
以下代码可以满足您的要求,但是添加标签的结构'' u 1:2:3:("") w labels
在我看来仍然很奇怪,并且不允许绘制装箱的标签。
在gnuplot控制台中,检查help contour
和help cntrparam
。
代码:
### pm3d with contour lines
reset session
set view equal xyz
# create some test data
set samples 40
set isosamples 40
set table $Data
splot '++' u 1:2:($1*$2/2-9)
unset table
set view map
set contour base
set cntrparam levels incremental -20,2,-8
set cntrlabel font ",10"
set xrange[-5:5]
set yrange[-5:5]
splot $Data u 1:2:3 w pm3d notitle,'' u 1:2:3:("") w labels notitle
### end of code
结果:
添加:
这是使用plot w image
而不是splot w pm3d
的另一种方法。
尽管仍然不能完全满足轮廓线上方的白色标签框的要求。向标签添加偏移量将无法同时适用于所有标签。我不确定是否有办法只中断标签的轮廓线。
代码:
### heatmap with contour lines
reset session
set view equal xyz
# create some test data
set samples 40
set isosamples 40
set table $Data
splot '++' u 1:2:($1*$2/2-9)
unset table
set view map
set contour base
set cntrparam levels incremental -20,10"
set xrange[-5:5]
set yrange[-5:5]
set style textbox noborder opaque
# put contour lines in a separate datablock
unset surface
set table $Contour
splot $Data u 1:2:3
unset table
plot $Data u 1:2:3 w image notitle,\
$Contour u 1:2 w l lw 2 lc "black" not,\
'' u 1:2:3 every 40::3 w labels boxed notitle
### end of code
结果:
添加2:
另一个带有彩色轮廓线和键而不是标签的变体。这似乎有点麻烦,我希望有一个更简单的解决方案。
代码:
### heatmap with colored contour lines
reset session
set view equal xyz
# create some test data
set samples 40
set isosamples 40
set table $Data
splot '++' u 1:2:($1*$2/2-9)
unset table
set view map
set contour base
set cntrparam levels incremental -20,-8
set xrange[-5:5]
set yrange[-5:5]
set style textbox noborder
# put contour lines in a separate datablock
unset surface
set table $Contour
splot $Data u 1:2:3
unset table
# get contour levels unique and in sorted order
set table $Dummy
plot $Contour u 3 w table
unset table
set table $ContourSorted
plot $Dummy u 1 smooth freq
unset table
print $ContourSorted
set key out right Left
plot $Data u 1:2:3 w image notitle,\
for [i=0:*] $Contour u 1:2:3 index i w l lw 2 lc i+1 not,\
for [i=|$ContourSorted|-2:5:-1] $ContourSorted u (NaN):1 w l lw 2 lc |$ContourSorted|-i-1 ti word($ContourSorted[i],1)
### end of code
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。