首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将FreeFEM++数据绘制为GNUPLOT

将FreeFEM++数据绘制为GNUPLOT
EN

Stack Overflow用户
提问于 2013-10-25 08:56:22
回答 1查看 2.4K关注 0票数 2

我正在尝试用FreeFEM++绘制使用gnuplot获取的数据。

在FreeFEM中,我使用以下代码保存了数据:

代码语言:javascript
复制
{ ofstream ff("sol.dat");
    for (int i=0;i<Th.nt;i++){
            for ( int j=0; j<3; j++){
                    ff<<Th[i][j].x << "\t" << Th[i][j].y << "\t" << u[][Vh(i,j)] << endl;
            }
            ff<<Th[i][0].x << "\t" << Th[i][0].y << "\t" << u[][Vh(i,0)] << "\n\n\n";
    }

}

第一行数据的示例如下:

代码语言:javascript
复制
0.635787    -0.0440338  0.0056924
0.65234 -0.063181   0.00797757
0.655369    -0.0412323  0.00795786
0.635787    -0.0440338  0.0056924


0.597634    -0.0376 3.06323e-33
0.613904    -0.0585366  0.0030425
0.616879    -0.0388107  0.0030295
0.597634    -0.0376 3.06323e-33

由于某些原因,我不知道在每个“包”中有一个数据点重复了两次。但这是他们在FreeFem手册中告诉你的。显然,GNUPLOT出于某种原因需要“数据包”之间的空格。

我试图用gnuplot脚本来绘制数据:

代码语言:javascript
复制
set pm3d at b
set palette rgbformulae 30,31,32
set hidden3d
splot "sol.dat" with lines palette

它的情节很好,但我认为pm3d没有做任何事情。我认为pm3d会在图的底部包含热强度的彩色图案。另外,我也找不到用纯色填充情节中线条之间的空白的方法。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-25 18:52:41

要回答这一问题,首先需要对组织数据的不同可能性作出适当的解释:

  1. 两个空行将两个不同的数据集分开。这些根本没有连接,它们之间没有线。在您的示例中,这是必需的,因为gnuplot不支持单个表面的网格类型。
  2. pm3d只在一个数据集中工作,并且需要一个规则的网格(参见pm3d演示)。单个曲面的两条线(等值线)必须仅用(一个空行)分隔。

您仍然有一个不规则的网格,pm3d无法处理。在gnuplot中,您可以使用dgrid3d对输入数据进行重采样,以获得一个规则的网格,并使用pm3d绘制该网格。

但是dgrid3d会影响一个splot命令的所有数据文件。因此,您还需要multiplot来使用两个splot命令。

下面的脚本展示了它是如何工作的,但是由于我没有完整的数据集,并且不知道dgrid3d如何处理这么多数据集(参见上面的1 ),这只是一个非常粗略的指南:

代码语言:javascript
复制
set multiplot

set pm3d at b
set dgrid3d 200,200
unset key
splot 'sol.dat' nosurface

unset dgrid3d
unset pm3d
splot 'sol.dat' with lines palette

unset multiplot

这是可行的,但您可能需要调优dgrid3d调用。另外,还可能需要一些其他的增强(绘制边框、抽象盒和彩色框,等等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19585422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档