Fortran有哪些可用的可视化库?

7
有哪些可用于Fortran编程语言的可视化开源或免费软件库?是否有类似于Python中的MatPlotLib的库?
如果没有,大多数科学家需要可视化来生成一些输出以及调查数据趋势,这在Fortran中是缺失的,尽管它在计算速度方面很出色。
注意:
此问题旨在发现可用或计划开发的Fortran图形库。这显然不会比较不同编程语言中的不同软件包。
灵活性、输出质量、互动性、多维度、免费/开源等因素需要被发现。

你可以尝试使用混合语言,不必在Fortran中进行可视化。通过f2py或fwrap,您可以轻松地从Python调用Fortran,在那里您可以完全灵活地使用Matplotlib(或任何其他Python库)。 - robince
您提到的方法是我目前正在使用的,但是存在困难。我最初使用Python开发我的代码,然后将其翻译成Fortran(如果需要速度)然后编译它,最后通过Python调用Fortran函数。然而,并不总是容易将Python代码翻译成Fortran。需要进行两个系列的调试:每种语言都需要一个。 - Developer
考虑使用numpy/scipy或PETSc/SLAPc。所有这些都使用快速编译代码来完成繁重的工作,并使用Python来表达高级操作。代码将比您自己编写的代码更简单,通常也更快。它还消除了转换为Fortran的步骤。 - Phil H
@PhilH,你提到的方法是我现在正在使用的,但是有时候我需要用Fortran编写代码以获得速度,即使使用Numpy也无法达到这样的性能!我的计算密集型部分的基准测试证明了Fortran很难被超越。 - Developer
6个回答

5

补充一下这个列表...

  • PLPLOT (绘图库)
  • GINO Suite(用于二维和三维数据可视化的软件包)
  • Winteracter(为Fortran开发的界面和工具箱)
  • NCAR(已过时)

首先,列出其他产品是有用的。请注意,GINO、Winteractor是商业产品。 - Developer
@开发者 - 对不起,我可能看问题的时候没有注意到开源/免费选项。(也许当时有,但是...算了吧。) - Rook

4

还有一个名为gtk-fortran的工具。

gtk-fortran也提供了一个与PLplot的接口(在GTK 3分支中需要>=5.13版本)。


这个工作(GTK-Fortran)没有图形功能,例如我们可以在其他工具中找到的。但是它是一个很好的用于为Fortran生成GUI的工具。 - Developer

3
我认为有一些库可用,可以直接从Fortran渲染数据,但据我所知没有像MatPlotLib这样的库。 编辑:这里是一个短链接集合: 但是典型的Fortran应用程序的主要重点不是数据的可视化,而是数据的生成。通常您会产生一些输出文件,然后可以由gnuplot或其他可视化工具读取。一个常见的数据容器格式是HDF5。如果仍然需要从Fortran应用程序直接进行可视化,则可以使用ISO_C_Binding与任何C库进行接口,这应该为您提供丰富的选项。尽管如此,在这些情况下,您可能需要在C API周围生成一些包装层,以便在Fortran应用程序中提供方便的使用。

我曾经使用过dislin、plplot和pgplot(很久以前)。这三个库都提供了Fortran绑定;前两个还提供了Fortran 90绑定。因此,在这些情况下,您不需要创建自己的包装器。 - M. S. B.
我想提到的是,在应用易用性和输出质量方面,列出的这些库都无法与MatPlotLib相媲美。此外,对于一些库,您需要将输出保存为文件,然后再进行可视化。因为我绝望地寻找了具有竞争力的替代品,所以我接受了这个事实,也就是答案。 - Developer
@开发者 - 你对DISLIN的输出的哪个部分不满意?我已经使用它创建了一些图表,并被杂志编辑接受。它还可以让你在程序中创建图表(无需创建输出文件然后再可视化)。 - Rook
@M.S.B. 是的,确实我只列出了那些我脑海中有专门支持Fortran的库。对于ISO_C_Binding的封装注释只是针对任意C接口... - haraldkl
@Rock:我过去有一些经验。我应该说我无法通过GFortran编译DISLIN。总是会有一些东西缺失!然而,我尝试使用DISLIN的Python绑定,这是成功的。但是,如果不是所有的图形,大多数图形都不是交互式的,这是MatPlotLib中每个图形固有的部分。此外,至少在屏幕上,图形质量比我在MatPlotLib中获得的要低。此外,MatPlotLib是完全免费的,而DISLIN则有一些许可证方面的考虑。 - Developer
@开发者 - 我没遇到过任何问题(至少我记得的没有),但如果你在使用它时遇到了什么麻烦,可以尝试在Dislin Google群组中寻求帮助,或直接联系作者Michels。他是个非常友好和乐于助人的人。 - Rook

3

免费软件:Mjograph(仅支持2D绘图)和Veusz(支持2D和3D绘图)

也许你可以使用Python/Compiled-Fortran代码生成csv或简单的空格分隔文件,并使用2D绘图软件如Mjograph和/或2D/3D软件如Veusz进行处理。 Mjograph仅适用于Mac和/或Java平台。 Veusz可使用Python进行脚本编写,它是使用Python、Qt和Numpy构建的,实际上保存文件只是一个普通的Python脚本,与gnuplot相比(至少在易用性方面)是可比的。Veusz的教程清楚地展示了其功能。我喜欢它从GUI开始,但之后你可以逐渐转向纯脚本。

Mjograph:http://www.ochiailab.dnj.ynu.ac.jp/mjograph/ Veusz:https://veusz.github.io/

与将数据导入Matlab或Mathematica相比,Veusz似乎更自然一些。至少如果你习惯在Linux上使用Bash脚本推动Python和Fortran。

如果你坚持需要3D数据,我建议你再看看DISLIN,它可以根据你需要可视化的内容很好地工作。商业使用的许可证价格相当实惠。如果用于学术用途,则是免费的。


1
通常,Fortran用户会创建大量的数据文件,然后使用一些第三方可视化软件来适配应用程序。有几个库可以直接链接到Fortran。Dislin是一个非常棒的库(特别是在Windows上)。它有大量的文档,一旦学习曲线过去,你也可以创建出很棒的GUI界面。GnuplotFortran是从Fortran到标准gnuplot的接口。我还没有使用过它,但听说它很不错。

0

我的选择会是来自Visual Numerics Inc.的PV-WAVE - 最近被Rogue Wave Solutions收购。

它使用了一个大型的Fortran例程库,并采用自己特殊的4G语言来加速编写自定义数据显示。

这个产品不便宜 - 它是为像地震数据分析、风速/方向数据表示、仿真等应用而开发的,如气动力学流动、注塑冷却、应力分析等 - 但它是我见过的最好的。 非常清晰的文档,每个库子程序都提供示例,良好的帮助指南,直接联系技术支持。 MatLab无法与之相比。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接