Using PLPLOT with Fortran

Share the page with



PLplot is a software package for creating scientific plots . It is cross-platform ❀, which means it will work on Windows, Unix, and Linux system. The PLplot software is primarily licensed under the LGPL πŸ”₯. It is written in C language, and it has bindings πŸ”— for several other language including Fortran πŸ–₯️ .

The PLplot core library can be used to create

You can find more about PLPLOT βž‘οΈπŸ–±

Historical remark

A small history of PLPLOT taken from the official documentation is given below.

PLplot was originally developed by Sze Tan of the University of Auckland in Fortran-77. Many of the underlying concepts used in the PLplot package are based on ideas used in Tim Pearson’s PGPLOT package. Sze Tan writes:

I’m rather amazed how far PLPLOT has travelled given its origins etc. I first used PGPLOT on the Starlink VAX computers while I was a graduate student at the Mullard Radio Astronomy Observatory in Cambridge from 1983-1987. At the beginning of 1986, I was to give a seminar within the department at which I wanted to have a computer graphics demonstration on an IBM PC which was connected to a completely non-standard graphics card. Having about a week to do this and not having any drivers for the card, I started from the back end and designed PLPLOT to be such that one only needed to be able to draw a line or a dot on the screen in order to do arbitrary graphics. The application programmer’s interface was made as similar as possible to PGPLOT so that I could easily port my programs from the VAX to the PC. The kernel of PLPLOT was modelled on PGPLOT but the code is not derived from it.

The C version of PLplot was originally developed by Tony Richardson on a Commodore Amiga. That version has been improved and expanded ever since first by Geoffrey Furnish and Maurice Lebrun in the 1990’s and later (after the project was registered at SourceForge on 2000-02-23) with a much-expanded development team.

Installation of binary packages

Ubuntu 🍻

sudo apt-get install libplplot-dev libplplotfortran0

MacOS 🍎

brew install plplot

Building from source

Download the source code

git clone plplot-plplot

I have also installed some extra libraries, which are given below.

sudo apt install libcairo-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev
pip3 install pyqt5 pyqt5-tools 

Building πŸͺ›

After downloading the source code, run the following command inside of terminal

cd plplot-plplot
git branch $(whoami)
git checkout $(whoami)

We will use -DCMAKE_INSTALL_PREFIX to specify the director wherein PLplot will be installed.

cmake -S ./ -B ./build DCMAKE_INSTALL_PREFIX=~/.easifem/extpkgs  -G "Unix Makefiles"
cmake --build ./build --target all
cmake --build ./build --target install

My Configuration: In my case, I want to install PLplot in ~/.easifem/extpkgs. I have already set an environment variable export EASIFEM_EXTPKGS=~/.easifem/extpkgs, so I will use ${EASIFEM_EXTPKGS}, but you can specify the path explicitly.


cmake --build ~/temp/easifem-extpkgs/plplot/build --target all

Now you can go to $EASIFEM_EXTPKGS

β”œβ”€β”€ bin
β”œβ”€β”€ include/plplot
β”œβ”€β”€ lib
β”œβ”€β”€ man
└── share

Contents of /bin πŸ“ is shown below

β”œβ”€β”€ plserver
β”œβ”€β”€ pltcl
└── pltek

Contents of /include/plplot πŸ“

β”œβ”€β”€ csadll.h
β”œβ”€β”€ csa.h
β”œβ”€β”€ disptab.h
β”œβ”€β”€ drivers.h
β”œβ”€β”€ pdf.h
β”œβ”€β”€ plConfig.h
β”œβ”€β”€ pldebug.h
β”œβ”€β”€ plDevs.h
β”œβ”€β”€ pldll.h
β”œβ”€β”€ plevent.h
β”œβ”€β”€ plplot.h
β”œβ”€β”€ plplotP.h
β”œβ”€β”€ plstream.h
β”œβ”€β”€ plstrm.h
β”œβ”€β”€ pltcl.h
β”œβ”€β”€ pltk.h
β”œβ”€β”€ plxwd.h
β”œβ”€β”€ qsastimedll.h
β”œβ”€β”€ qsastime.h
β”œβ”€β”€ qt.h
└── tclMatrix.h

Contents of /lib πŸ“

β”œβ”€β”€ cmake
β”œβ”€β”€ fortran
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ libplfortrandemolib.a
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ ->
β”œβ”€β”€ pkgconfig
└── plplot5.15.0
└── drivers
    β”œβ”€β”€ mem.driver_info
    β”œβ”€β”€ ntk.driver_info
    β”œβ”€β”€ null.driver_info
    β”œβ”€β”€ ps.driver_info
    β”œβ”€β”€ qt.driver_info
    β”œβ”€β”€ svg.driver_info
    β”œβ”€β”€ tk.driver_info
    β”œβ”€β”€ tkwin.driver_info
    β”œβ”€β”€ xfig.driver_info
    β”œβ”€β”€ xwin.driver_info

The lib/cmake directory πŸ“ contains files necessary for using PLplot with CMake. The contents of this directory are given below.

β”œβ”€β”€ export_csirocsa.cmake
β”œβ”€β”€ export_csirocsa-release.cmake
β”œβ”€β”€ export_mem.cmake
β”œβ”€β”€ export_mem-release.cmake
β”œβ”€β”€ export_ntk.cmake
β”œβ”€β”€ export_ntk-release.cmake
β”œβ”€β”€ export_null.cmake
β”œβ”€β”€ export_null-release.cmake
β”œβ”€β”€ export_plfortrandemolib.cmake
β”œβ”€β”€ export_plfortrandemolib-release.cmake
β”œβ”€β”€ export_plplot.cmake
β”œβ”€β”€ export_plplotcxx.cmake
β”œβ”€β”€ export_plplotcxx-release.cmake
β”œβ”€β”€ export_plplotfortran.cmake
β”œβ”€β”€ export_plplotfortran-release.cmake
β”œβ”€β”€ export_plplotqt.cmake
β”œβ”€β”€ export_plplotqt-release.cmake
β”œβ”€β”€ export_plplot-release.cmake
β”œβ”€β”€ export_plplottcltk.cmake
β”œβ”€β”€ export_plplottcltk_Main.cmake
β”œβ”€β”€ export_plplottcltk_Main-release.cmake
β”œβ”€β”€ export_plplottcltk-release.cmake
β”œβ”€β”€ export_plserver.cmake
β”œβ”€β”€ export_plserver-release.cmake
β”œβ”€β”€ export_pltcl.cmake
β”œβ”€β”€ export_pltcl-release.cmake
β”œβ”€β”€ export_pltek.cmake
β”œβ”€β”€ export_pltek-release.cmake
β”œβ”€β”€ export_ps.cmake
β”œβ”€β”€ export_ps-release.cmake
β”œβ”€β”€ export_qsastime.cmake
β”œβ”€β”€ export_qsastime-release.cmake
β”œβ”€β”€ export_qt.cmake
β”œβ”€β”€ export_qt-release.cmake
β”œβ”€β”€ export_svg.cmake
β”œβ”€β”€ export_svg-release.cmake
β”œβ”€β”€ export_tclmatrix.cmake
β”œβ”€β”€ export_tclmatrix-release.cmake
β”œβ”€β”€ export_tk.cmake
β”œβ”€β”€ export_tk-release.cmake
β”œβ”€β”€ export_tkwin.cmake
β”œβ”€β”€ export_tkwin-release.cmake
β”œβ”€β”€ export_xfig.cmake
β”œβ”€β”€ export_xfig-release.cmake
β”œβ”€β”€ export_xwin.cmake
β”œβ”€β”€ export_xwin-release.cmake
β”œβ”€β”€ plplotConfig.cmake
β”œβ”€β”€ plplotConfigVersion.cmake
└── plplot_exports.cmake

The lib/pkgconfig directory contains files necessary for finding PLplot using pkgconfig in CMake projects. The contents of this directory are given below.

β”œβ”€β”€ plplot-c++.pc
β”œβ”€β”€ plplot-fortran.pc
β”œβ”€β”€ plplot.pc
β”œβ”€β”€ plplot-qt.pc
β”œβ”€β”€ plplot-tcl_Main.pc
└── plplot-tcl.pc

The lib/fortran/modules/plplot directory contains Fortran module files as shown below.

β”œβ”€β”€ plfortrandemolib.mod
β”œβ”€β”€ plplot_double.mod
β”œβ”€β”€ plplot_graphics.mod
β”œβ”€β”€ plplot.mod
β”œβ”€β”€ plplot_private_exposed.mod
β”œβ”€β”€ plplot_private_utilities.mod
β”œβ”€β”€ plplot_single.mod
└── plplot_types.mod

After a successful build open your .bashrc or .zshrc and add following lines to it


Note: You have to replace ${EASIFEM} with the PLplot installation path.

Subsequently, run the following command inside terminal.

source ~/.bashrc #if bash if default SHELL


source ~/.zshrc #if ZSH is default

Running examples

Create a directory test πŸ“

mkdir test
cd test
curl -o PLplot_example_1.F90
curl -o CMakeLists.txt
cmake -B ./build -DFILE_NAME:STRING="PLplot_example_1.F90"
cmake --build ./build

The content of CMakeLists.txt is given below


SET(PLplot_INCLUDE_DIR "$ENV{EASIFEM_EXTPKGS}/lib/fortran/modules/plplot" )

  ${PLplot_Fortran_LIBRARY} )


You should see the following result.


Share the page with