fortran66のブログ

fortran について書きます。

Fortran から無理やり matplotlib でグラフ

Fortran から外部コマンドを実行するサブルーチンは、Fortran2008 から規格に入りました。IntelFortran ではまだ実装されていないようです。(大抵の処理系では、昔から独自拡張でシステムコールサブルーチンが用意されていましたが・・・)

f:id:fortran66:20131215023615j:plain

    program Python
      implicit none
      integer :: i
      real, allocatable :: x(:), y(:)
      open(9, file = 'test.py', status = 'unknown')
      write(9, '(a)') 'import matplotlib.pyplot as plt'
      x = [(0.1 * i, i = 1, 1000)]
      y = sin(x)
      write(9, '(a, *(g0,","))') 'x=[', x
      write(9, '(a)') ']'
      write(9, '(a, *(g0,","))') 'y=[', y
      write(9, '(a)') ']'
      write(9, '(a)') 'plt.plot(x, y)'
      write(9, '(a)') 'plt.show()'
      close(9)
      !
      print *, 'starting matplotlib'
      call system('python test.py')
      ! call execute_command_line('')! Fortran2008
      stop ' normal end'
    end program Python

ださいやり方だが、サブルーチン化して単に、x、yの配列渡すだけにすれば見かけ上は簡便なグラフプロットに使えるかも・・・

Python だるくてコマンド覚えられない。Fortran の楽さに比べると苦行杉。まぁ昔の BASIC みたいなもんだと思って我慢か。