Python’s matplotlib.pyplot is a very nice collection of functions that provide an easy Matlab-like interface for data plotting. It can be used to generate quite professional looking plots. There is a lot of information on the internet about calling Fortran from Python, but what if all you want to do is generate some plots from your (modern) Fortran program? With this in mind, I’ve created a very simple Fortran wrapper for Pyplot, allowing you to make pretty good plots by writing only Fortran code. Consider the following example:
program test use,intrinsic :: iso_fortran_env, only: wp => real64 use pyplot_module implicit none real(wp),dimension(100) :: x,sx,cx,tx type(pyplot) :: plt integer :: i !generate some data: x = [(real(i,wp), i=0,size(x)-1)]/5.0_wp sx = sin(x) cx = cos(x) tx = sx * cx !plot it: call plt%initialize(grid=.true.,xlabel='angle (rad)',& title='python_plot test',legend=.true.) call plt%add_plot(x,sx,label='$\sin (x)$',& linestyle='b-o',markersize=5,linewidth=2) call plt%add_plot(x,cx,label='$\cos (x)$',& linestyle='r-o',markersize=5,linewidth=2) call plt%add_plot(x,tx,label='$\sin (x) \cos (x)$',& linestyle='g-o',markersize=2,linewidth=1) call plt%savefig('test.png') end program test
The main user interface is the
pyplot class, which has methods such as
savefig. This example produces the following plot:
All the module does is generate a Python script, and then runs it and saves the result. The Python call is completely transparent to the Fortran user.
I posted the project to GitHub (pyplot-fortran). Maybe someone else will find it useful, or help to expand it.