Matrix 如何在gnuplot中的彩色地图上覆盖等高线图?

Matrix 如何在gnuplot中的彩色地图上覆盖等高线图?,matrix,gnuplot,contour,color-mapping,Matrix,Gnuplot,Contour,Color Mapping,我试图用datasetB的等高线图创建datasetA的彩色图,这两个图都是从文件中读取的 以下操作成功创建了datasetA的colormap: plot 'valuesA.dat' matrix with image 我可以画出描述的轮廓 我怎样才能把这两个情节结合起来呢 提前谢谢 要回答这个问题,请访问。以下是我如何为大小为512x512的数组(例如)执行此操作的。假设我有一个数据文件a.dat,用于彩色贴图,而B.dat用于等高线 从B.dat创建包含轮廓数据的表格,并将其保存到临时

我试图用datasetB的等高线图创建datasetA的彩色图,这两个图都是从文件中读取的

以下操作成功创建了datasetA的colormap:

plot 'valuesA.dat' matrix with image
我可以画出描述的轮廓

我怎样才能把这两个情节结合起来呢


提前谢谢

要回答这个问题,请访问。

以下是我如何为大小为512x512的数组(例如)执行此操作的。假设我有一个数据文件
a.dat
,用于彩色贴图,而
B.dat
用于等高线

  • B.dat
    创建包含轮廓数据的表格,并将其保存到临时文件
    temp.dat
  • 使用
    A.dat
    绘制颜色图,并在单个命令中从temp文件
    temp.dat
    绘制等高线
以下是我的代码(为了清晰起见,有些简化):


为了看看它是什么样子,我最终使用了该代码的脚本版本来生成(和其他)用于我的研究

您希望以何种方式将这两个图结合起来?这不会让结果变得不可读吗?我对你想做什么有点困惑。在我看来,上面的链接中提供了您想要的内容(只需替换datasetB,在这里他在
set table
unset table
命令之间对其原始数据进行轮廓绘制。)请看一看,这里有非常详细的描述。在本例中,使用了相同的数据,但您可以选择不同的数据集来获得所需的结果。@Andreas:非常感谢!那正是我要找的!(很抱歉,我没有早点谢谢你。)由于灵活性,这比我预期的要复杂,但电源是可选的。对不起!我从未真正接受过你的回答。我现在就来。为了方便起见,我还添加了我自己的答案,因为我认为这可能对过路人有帮助。你是如何创建等高线数据文件的?它有什么格式?难道不可能编写等高线文件,以便在不创建临时文件的情况下直接使用它吗?我在这个答案中的代码实际上在名为“创建等高线数据文件”的段落中创建了等高线文件(
temp.dat
)。前三行设置了我想要什么样的等高线图,
unset surface
告诉gnuplot我只需要这些数据的等高线,而不需要任何曲面图。
设置表“temp.dat”
标识输出轮廓文件。下一行表示使用名为
“B.dat”
的源数据文件创建等高线图(将按照前一行中的指定输出),这是一个具有512x512双精度值的二进制数据文件。在最后一行(从
plot
开始),您会注意到它使用两个输入文件:
“a.dat”
(这是我想要的实际2D彩色“图像”绘图),加上
“temp.dat”
等高线绘图文件。它告诉gnuplot将等高线叠加到2D“图像”绘图上。这些是否都回答了您的问题@sjoerd222888?有关等高线绘图的更多文档可在此处获得:。
# Set initial state
reset
set term X11
set palette @MATLAB    # see http://www.gnuplotting.org/matlab-colorbar-with-gnuplot/

# Create a file for contour data
set contour base
set cntrparam levels 25
set isosample 250,250
unset surface
set table "temp.dat"
splot "B.dat" binary array=512x512 format='%double'
unset table


# Plot the final results
set title "Contours and Colormap"
set size square
unset key
set xtics ('0' 0, '0.5' 255, '1.0' 511)   # Change these according to your dimensions
set ytics ('0' 0, '0.5' 255, '1.0' 511)   # Change these according to your dimensions

set cbrange [0.0:1.0]
set xlabel "X (scaled by height)"
set ylabel "Z (scaled by height)"


set terminal png
set output "output.png"
plot "A.dat" binary array=512x512 format='%double' with image, "temp.dat" with lines lt -1