Ubuntu下Fortran数据可视化实用方案
一、常用方案与适用场景
- 下表给出在Ubuntu上将Fortran计算结果进行可视化的主流做法、适用场景与关键要点:
| 方案 |
适用场景 |
关键要点 |
| 外部绘图工具(Gnuplot、Python+Matplotlib、R、Octave) |
最常见、上手快、脚本化批量出图 |
Fortran负责计算与导出数据,绘图交给专业工具 |
| Fortran绘图库(DISLIN) |
希望程序内直接出图、减少外部依赖 |
需安装DISLIN,调用其API绘图 |
| 交互式/高级可视化(Python科学栈、R、Octave GUI) |
需要交互探索、复杂统计与多图布局 |
适合分析+可视化一体化工作流 |
说明:Fortran本身不直接提供绘图能力,通常将数据写入文件,再由外部工具绘图;也可使用如DISLIN这类库在程序内绘图。
二、快速上手流程
- 步骤1 安装基础工具
- 安装编译器与常用绘图工具:
- sudo apt update
- sudo apt install gfortran gnuplot python3-matplotlib r-base octave
- 步骤2 Fortran导出数据
- 二维数据示例(将 x-y 写入 data.dat):
- program write_data
implicit none
integer, parameter :: n = 101
real :: x(n), y(n)
integer :: i
do i = 1, n
x(i) = (i-1)*0.1
y(i) = sin(x(i))
end do
open(unit=10, file=‘data.dat’, status=‘replace’)
do i = 1, n
write(10, *) x(i), y(i)
end do
close(10)
print *, ‘Wrote data.dat’
end program write_data
- 步骤3 使用Gnuplot快速绘图
- 交互式:
- gnuplot
- gnuplot> plot ‘data.dat’ with linespoints title ‘sin(x)’
- 批处理(生成 PNG):
- echo “set terminal png size 800,600; set output ‘plot.png’; plot ‘data.dat’ with linespoints title ‘sin(x)’” | gnuplot
- 步骤4 使用Python+Matplotlib绘图
- 保存为 plot.py:
- import numpy as np, matplotlib.pyplot as plt
- data = np.loadtxt(‘data.dat’)
- plt.plot(data[:,0], data[:,1], label=‘sin(x)’)
- plt.xlabel(‘x’); plt.ylabel(‘y’); plt.legend(); plt.savefig(‘plot.png’, dpi=150); plt.show()
- 运行:python3 plot.py
- 步骤5 使用DISLIN在Fortran内绘图(可选)
- 安装DISLIN后,示例:
- program simple_plot
implicit none
integer :: i
real :: x(10), y(10)
do i = 1, 10
x(i) = i
y(i) = x(i)**2
end do
call disini()
call pagera()
call name(‘X-Axis’, ‘x’)
call name(‘Y-Axis’, ‘y’)
call title(‘Simple Plot of y = x^2’)
call curve(x, y, 10)
call disfin()
end program simple_plot
- 编译(示例):gfortran simple_plot.f90 -o simple_plot -ldislin
- 步骤6 使用R或Octave绘图(可选)
- R:
- R
-
d <- read.table(‘data.dat’); plot(d[,1], d[,2], type=‘l’, main=‘sin(x)’)
- Octave:
- octave --persist
- octave:1> d = load(‘data.dat’); plot(d(:,1), d(:,2)); title(‘sin(x)’)
三、实用建议
- 数据格式:优先输出为ASCII 两列/三列(如 x y 或 x y z),便于 Gnuplot、Python、R、Octave 直接读取;二进制格式需配套读取脚本。
- 脚本化与批处理:将绘图命令写入脚本(.gnu、.py、.R、.m),用 Makefile 或 Shell 串联“计算→导出→绘图”,便于复现实验与批量出图。
- 图形终端与分辨率:Gnuplot 常用终端如 png、svg、pdf;导出论文图建议矢量格式(svg/pdf)或高分辨率 png(如 300 dpi)。
- 多图与3D:Gnuplot 支持多曲线与简单 3D(如 splot);复杂 3D/统计图建议交给 Python(Matplotlib/Seaborn)、R 或 Octave。
- 性能与规模:超大数据集(>1e7 行)建议先降采样或分块绘图;Python 可用 NumPy 内存映射,Gnuplot 可设置 binning/采样。