Documentation: cppcolormap.readthedocs.org
Doxygen documentation: tdegeus.github.io/cppcolormap
C++ and Python library specifying colormaps.
This library is free to use under the GPLv3 license. Any additions are very much appreciated, in terms of suggested functionality, code, documentation, testimonials, word-of-mouth advertisement, etc. Bug reports or feature requests can be filed on GitHub. As always, the code comes with no guarantee. None of the developers can be held responsible for possible mistakes.
Download: .zip file | .tar.gz file.
(c - GPLv3) T.W.J. de Geus (Tom) | [email protected] | www.geus.me | github.com/tdegeus/cppcolormap
Contributors
conda install -c conda-forge cppcolormap
# Download cppcolormap
git checkout https://github.com/tdegeus/cppcolormap.git
cd cppcolormap
# For CMake or pkg-config use
cmake .
make install
The principle interface is with these two functions:
#include <cppcolormap.h>
int main()
{
std::cout << cppcolormap::colormap("Reds") << std::endl;
std::cout << cppcolormap::colorcycle("tue") << std::endl;
return 0;
}
Lists of colormaps and color-cycles can be found below.
The colormaps are stored as a matrix whereby each row contains the (R,G,B) colors. Each color value has a range [0..1]
. The number of colors varies from map to map, but can be interpolated by specifying the number of colors you want:
#include <cppcolormap.h>
int main()
{
std::cout << cppcolormap::colormap("Reds", 256) << std::endl;
return 0;
}
Note that the colorcycles are not interpolatable. Consequently the functions do have a size option. Note also that the colormaps and colorcycles can also be called directly, e.g.
#include <cppcolormap.h>
int main()
{
std::cout << cppcolormap::Reds() << std::endl;
std::cout << cppcolormap::Reds(256) << std::endl;
std::cout << cppcolormap::tue() << std::endl;
return 0;
}
To find the closest match of each color of a colormap in another colormap you can use:
xt::xtensor<size_t,1> idx = cppcolormap::match(cmap1, cmap2);
xt::xtensor<size_t,1> idx = cppcolormap::match(cmap1, cmap2, cppcolormap::metric::euclidean);
The following metrics can be used:
- euclidean (default)
- fast_perceptual
- perceptual
Using cppcolormap the CMakeLists.txt
can be as follows
cmake_minimum_required(VERSION 3.1)
project(example)
find_package(cppcolormap REQUIRED)
add_executable(example example.cpp)
target_link_libraries(example PRIVATE cppcolormap)
Note that the target cppcolormap includes the target xtensor (itself automatically enforcing the minimal C++14 standard), which is automatically searched using find_package(cppcolormap)
.
Compilation can then proceed using
-
Unix:
cmake . make
-
Windows:
cmake -G"NMake Makefiles" . nmake
Download example "CMakeLists.txt"
Presuming that the compiler is c++
, compile using (Unix):
c++ `pkg-config --cflags cppcolormap` `pkg-config --cflags xtensor` -std=c++14 ...
Presuming that the compiler is c++
, compile using (Unix):
c++ -I/path/to/cppcolormap/include -I/path/to/xtensor/include -std=c++14 ...
conda install -c conda-forge python-cppcolormap
# Download cppcolormap
git checkout https://github.com/tdegeus/cppcolormap.git
cd cppcolormap
# Compile and install
python -m pip install .
Note that you have to install the dependencies pybind11, xtensor, and pyxtensor first.
There are two principle functions, each returns a 2-d NumPy array:
import cppcolormap as cm
# number of colors in the colormap (optional, may be omitted)
N = 256
# specify the colormap as string
cols = cm.colormap("Reds", N)
cols = cm.colorcycle("tue")
# or call the functions directly
cols = cm.Reds(N)
cols = cm.tue()
(see lists of colormaps and color-cycles below).
To find the closest match of each color of a colormap in another colormap you can use:
idx = cm.match(cmap1, cmap2)
idx = cm.match(cmap1, cmap2, cm.metric.perceptual)
(See metrics above.)
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import cppcolormap as cm
x, y = np.meshgrid(
np.linspace(0, 1, 100),
np.linspace(0, 1, 100))
d = np.sqrt(x ** 2.0 + y ** 2.0)
C = cm.Reds(256)
C = np.c_[C, np.ones(C.shape[0])]
cmap = matplotlib.colors.LinearSegmentedColormap.from_list('my_colormap', C)
fig, ax = plt.subplots()
cax = ax.imshow(d, cmap=cmap)
plt.show()
Name | Inverse colormap |
---|---|
Accent | Accent_r |
Dark2 | Dark2_r |
Paired | Paired_r |
Spectral | Spectral_r |
Pastel1 | Pastel1_r |
Pastel2 | Pastel2_r |
Set1 | Set1_r |
Set2 | Set2_r |
Set3 | Set3_r |
Blues | Blues_r |
Greens | Greens_r |
Greys | Greys_r |
Oranges | Oranges_r |
Purples | Purples_r |
Reds | Reds_r |
BuPu | BuPu_r |
GnBu | GnBu_r |
PuBu | PuBu_r |
PuBuGn | PuBuGn_r |
PuRd | PuRd_r |
RdPu | RdPu_r |
OrRd | OrRd_r |
RdOrYl | RdOrYl_r |
YlGn | YlGn_r |
YlGnBu | YlGnBu_r |
YlOrRd | YlOrRd_r |
BrBG | BrBG_r |
PuOr | PuOr_r |
RdBu | RdBu_r |
RdGy | RdGy_r |
RdYlBu | RdYlBu_r |
RdYlGn | RdYlGn_r |
PiYG | PiYG_r |
PRGn | PRGn_r |
Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University.
Licensed under the Apache License, Version 2.0
Name | Inverse colormap |
---|---|
spring | spring_r |
summer | summer_r |
autumn | autumn_r |
winter | winter_r |
bone | bone_r |
cool | cool_r |
hot | hot_r |
copper | copper_r |
hsv | hsv_r |
nipy_spectral | nipy_spectral_r |
terrain | terrain_r |
seismic | seismic_r |
afmhot | afmhot_r |
magma | magma_r |
inferno | inferno_r |
plasma | plasma_r |
viridis | viridis_r |
jet | jet_r |
Copyright (c) New matplotlib colormaps by Nathaniel J. Smith, Stefan van der Walt, and in the case of viridis) Eric Firing.
Licensed under the CC0 license / public domain dedication.
Name | Inverse colormap | Source |
---|---|---|
White | - | |
Grey | - | |
Black | - | |
Red | - | |
Blue | - | |
tuedarkblue | - | [1] |
tueblue | - | [1] |
tuelightblue | - | [1] |
tuewarmred | - | [1] |
Apricot | - | [2] |
Aquamarine | - | [2] |
Bittersweet | - | [2] |
Black | - | [2] |
Blue | - | [2] |
BlueGreen | - | [2] |
BlueViolet | - | [2] |
BrickRed | - | [2] |
Brown | - | [2] |
BurntOrange | - | [2] |
CadetBlue | - | [2] |
CarnationPink | - | [2] |
Cerulean | - | [2] |
CornflowerBlue | - | [2] |
Cyan | - | [2] |
Dandelion | - | [2] |
DarkOrchid | - | [2] |
Emerald | - | [2] |
ForestGreen | - | [2] |
Fuchsia | - | [2] |
Goldenrod | - | [2] |
Gray | - | [2] |
Green | - | [2] |
GreenYellow | - | [2] |
JungleGreen | - | [2] |
Lavender | - | [2] |
LimeGreen | - | [2] |
Magenta | - | [2] |
Mahogany | - | [2] |
Maroon | - | [2] |
Melon | - | [2] |
MidnightBlue | - | [2] |
Mulberry | - | [2] |
NavyBlue | - | [2] |
OliveGreen | - | [2] |
Orange | - | [2] |
OrangeRed | - | [2] |
Orchid | - | [2] |
Peach | - | [2] |
Periwinkle | - | [2] |
PineGreen | - | [2] |
Plum | - | [2] |
ProcessBlue | - | [2] |
Purple | - | [2] |
RawSienna | - | [2] |
Red | - | [2] |
RedOrange | - | [2] |
RedViolet | - | [2] |
Rhodamine | - | [2] |
RoyalBlue | - | [2] |
RoyalPurple | - | [2] |
RubineRed | - | [2] |
Salmon | - | [2] |
SeaGreen | - | [2] |
Sepia | - | [2] |
SkyBlue | - | [2] |
SpringGreen | - | [2] |
Tan | - | [2] |
TealBlue | - | [2] |
Thistle | - | [2] |
Turquoise | - | [2] |
Violet | - | [2] |
VioletRed | - | [2] |
White | - | [2] |
WildStrawberry | - | [2] |
Yellow | - | [2] |
YellowGreen | - | [2] |
YellowOrange | - | [2] |
Name | Inverse colormap |
---|---|
xterm | xterm_r |
See this site
Name | Inverse colormap |
---|---|
tue | tue_r |
Based on the corporate color scheme of the Eindhoven University of Technology.