This example will create colorbar files for each available colormap and the corresponding test images. It also demonstrates how you can create your own colormap defined in an array, or import it from a text file. The name of your colormap must conform to the max length defined in forcolormap_parameters.f90 You can also download your colormap from a .txt file by using the load() method instead of the set() method.
| Type | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|
| type(Colormap) | :: | cmap | ||||
| type(Colormap) | :: | custom_cmap | ||||
| integer | :: | i | ||||
| integer, | dimension(0:7, 3) | :: | my_colormap | = | reshape([198, 29, 32, 189, 21, 56, 171, 82, 150, 102, 81, 156, 38, 53, 108, 5, 65, 40, 221, 199, 44, 237, 191, 44], shape(my_colormap), order=[2, 1]) |
A discrete colormap with 8 levels, by @alozada, resembling the color changes in red cabbage (containing Anthocyanins) with pH: |
| real(kind=wp), | parameter, dimension(2) | :: | xmax | = | [599.0_wp, 599.0_wp] | |
| real(kind=wp), | parameter, dimension(2) | :: | xmin | = | [0.0_wp, 0.0_wp] |
A sample test function to generate colormap images.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | x | |||
| real(kind=wp), | intent(in) | :: | y |
program demo use forcolormap, only: Colormap, wp, cmap_info implicit none integer :: i type(Colormap) :: cmap, custom_cmap real(wp), dimension(2), parameter :: xmin = [0.0_wp, 0.0_wp] real(wp), dimension(2), parameter :: xmax = [599.0_wp, 599.0_wp] !> A discrete colormap with 8 levels, by @alozada, resembling the color !> changes in red cabbage (containing Anthocyanins) with pH: integer, dimension(0:7, 3) :: my_colormap = reshape( [ & 198, 29, 32, & 189, 21, 56, & 171, 82, 150, & 102, 81, 156, & 38, 53, 108, & 5, 65, 40, & 221, 199, 44, & 237, 191, 44 ], & shape(my_colormap), order = [2, 1] ) !> The name of your colormap must conform to the max length !> defined in forcolormap_parameters.f90 ! Use the create() method instead of the set() method. call custom_cmap%create('red_cabbage', 0.0_wp, 2.0_wp, my_colormap) call custom_cmap%colorbar('red_cabbage_colorbar') call custom_cmap%colormap('red_cabbage_test', zfun, xmin, xmax) ! We create PPM files (binary encoded by default) for each built-in colormap. ! The built-in z=f(x,y) test function is in the [0, 2] range: do i = 1, cmap_info%get_ncolormaps() call cmap%set(trim(cmap_info%get_name(i)), 0.0_wp, 2.0_wp) call cmap%colorbar(trim(cmap_info%get_name(i))//'_colorbar') call cmap%colormap(trim(cmap_info%get_name(i))//'_test', zfun, xmin, xmax) print '("Colormap ", A30, " has ", I0, " levels")', trim(cmap%get_name()), cmap%get_levels() end do ! Cubehelix can also accept other parameters (varargs array): call cmap%set("cubehelix", 0.0_wp, 2.0_wp, 1024, [0.5_wp, -1.0_wp, 1.0_wp, 1.0_wp]) ! We change the name for the output test files: call cmap%colorbar('cubehelix_customized_colorbar') call cmap%colormap('cubehelix_customized_test', zfun, xmin, xmax) !> You can also download your colormap from a .txt file by !> using the load() method instead of the set() method. call custom_cmap%load("test_map_to_load.txt", 0.0_wp, 2.0_wp) call custom_cmap%colorbar('a_loaded_colorbar') call custom_cmap%colormap('a_loaded_colormap_test', zfun, xmin, xmax) call custom_cmap%print() contains !> A sample test function to generate colormap images. pure function zfun(x,y) result(z) real(wp), intent(in) :: x, y real(wp) :: z z = 1.0_wp + sin(x*y/10000.0_wp) * cos(y/100.0_wp) end function end program demo