首页 > 解决方案 > 在 gnuplot 中绘制两个二维图,一个在另一个之上

问题描述

我想为每个图使用两个不同的调色板绘制两个二维图,一个在另一个之上(我的总体目标是用这些图片制作两个分布的动画)。我写了下面的片段,基本上是两个面板multiplot在彼此的顶部

CMD = "rm -f *.png && echo 'Initializing...'"
system(CMD)
set terminal pngcairo
PATH = '../RUNS/ZRU_0016/'
i = 900
mincb = -16
maxcb = 0
set cbrange[mincb:maxcb]
set xrange[0:201]
set yrange[0:201]
unset key
set ylabel "j"
set xlabel "i"
# This functions gives the name of the snapshot file
snapshot(i) = sprintf("snapshot_%04d.dat", i)
#-------------------------------------------------------------
    set margins screen 0.1, screen 0.85, screen 0.1, screen 0.9
    set output sprintf('%07d.png', i)
    set yrange[0:201]
    set multiplot 
    mincb = -12
    maxcb = 0
    set cbrange[mincb:maxcb]
    load 'jet.pal'
    plot PATH.'snapshots/'.snapshot(i) using 1:2:(log10($4)>mincb?(log10($4)):mincb) with lines palette lw 3, \
         PATH.'data_main_ddnls_twod_mlce.dat' u 10:11 every ::i::i  w p pt 7 lc 'black' notitle 

    mincb = -8
    maxcb = 0
    set cbrange[mincb:maxcb]
    load 'greys.pal'
    plot PATH.'snapshots/'.snapshot(i) using 1:2:(log10($5)>mincb?(log10($5)):mincb) with lines palette lw 3, \
         PATH.'data_main_ddnls_twod_mlce.dat' u 12:13 every ::i::i  w p pt 7 lc 'black' notitle 
    unset multiplot 

我得到一个看起来像这样的结果 在 gnuplot 中绘制两个分布,一个在另一个之上

如您所见,加载的第一个分布jet.pal(matlab 默认配色方案)应该看起来很闪亮,但似乎被第二个分布用浅灰色遮住了(不用担心颜色条)。

我怎样才能让这两个分布在情节上正确?

标签: gnuplot

解决方案


你能澄清一下你的数据文件的格式吗?由于热图通常以 pm3d 模式或使用“带图像”绘制,因此您正在绘制“带线”是出乎意料的。在任何一种模式下,您都可以使用命令为组成像素分配部分透明度

set style fill transparent solid 0.5 noborder

这将允许第一个绘制的情节通过第二个情节显示。


推荐阅读