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