- imagesc is an Python package to create heatmaps. Various methods to create a heatmap are implemented, each with specific properties that can help to easily create your heatmap. The fast and clean method is optimized for speed, the cluster method provides clustering, the seaborn method contains many configuration settings, and finally, the plot as good as possible the imagesc from matlab.
Star this repo if you like it! ⭐️
# X is your numpy array
fig = imagesc.seaborn(X)
fig = imagesc.cluster(X)
fig = imagesc.fast(X)
fig = imagesc.clean(X)
fig = imagesc.plot(X)
status = imagesc.savefig(fig)
path = imagesc.d3(df)
- Install imagesc from PyPI (recommended). imagesc is compatible with Python 3.6+ and runs on Linux, MacOS X and Windows.
- It is distributed under the MIT license.
# Note that: seaborn is only required when using **seaborn** or **cluster** functions.
pip install -r requirements.txt
pip install imagesc
import imagesc as imagesc
- Implemention is based on d3
- Interactive
- Stand-alone
- https://d3-graph-gallery.com
df = pd.DataFrame(np.random.randint(0, 100, size=(50, 50)))
imagesc.d3(df, vmax=1)
- Underlying implemented is based on seaborn
- Large number of configurations
- Slow when using large datasets
- Grid is aligned to the cells
- See here for all parameters: https://seaborn.pydata.org/generated/seaborn.heatmap.html
df = pd.DataFrame(np.random.randint(0,100,size=(10,20)))
A = imagesc.seaborn(df.values, df.index.values, df.columns.values)
B = imagesc.seaborn(df.values, df.index.values, df.columns.values, annot=True, annot_kws={"size": 12})
C = imagesc.seaborn(df.values, df.index.values, df.columns.values, annot=True, annot_kws={"size": 12}, cmap='rainbow')
D = imagesc.seaborn(df.values, df.index.values, df.columns.values, annot=True, annot_kws={"size": 12}, cmap='rainbow', linecolor='#ffffff')
- Underlying implemented is based on clustermap
- When you desire to cluster your heatmap
- Default distance setting: metric="euclidean", linkage="ward" (can be changed)
- Slow for large data sets
- Grid is aligned to the cells
- Possibilities to tweak
- Possible arguments: https://seaborn.pydata.org/generated/seaborn.clustermap.html
df = pd.DataFrame(np.random.randint(0,100,size=(10,20)))
fig_C1 = imagesc.cluster(df.values, df.index.values, df.columns.values)
fig_C2 = imagesc.cluster(df.values, df.index.values, df.columns.values, cmap='rainbow')
fig_C3 = imagesc.cluster(df.values, df.index.values, df.columns.values, cmap='rainbow', linecolor='#ffffff')
fig_C4 = imagesc.cluster(df.values, df.index.values, df.columns.values, cmap='rainbow', linecolor='#ffffff', linewidth=0)
imagesc.savefig(fig_C1, './docs/figs/cluster4.png')
- Underlying implemented is based on pcolorfast
- Fast
- Not so much tweakable
- Grid is not aligned to the cells
- Possible arguments: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.pcolorfast.html
df = pd.DataFrame(np.random.randint(0,100,size=(10,20)))
fig_F1 = imagesc.fast(df.values, df.index.values, df.columns.values)
fig_F2 = imagesc.fast(df.values, df.index.values, df.columns.values, grid=False)
fig_F3 = imagesc.fast(df.values, df.index.values, df.columns.values, grid=False, cbar=False)
fig_F4 = imagesc.fast(df.values, df.index.values, df.columns.values, grid=True, cbar=False)
fig_F5 = imagesc.fast(df.values, df.index.values, df.columns.values, cmap='rainbow')
fig_F6 = imagesc.fast(df.values, df.index.values, df.columns.values, cmap='rainbow', linewidth=0.5, grid=True)
imagesc.savefig(fig_C1, './docs/figs/fast1.png')
- Underlying implemented is based on pcolorfast
- Fast
- No Grid
- Limited configurations
- Ideal for photos
- Possible arguments: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.pcolorfast.html
df = pd.DataFrame(np.random.randint(0,100,size=(10,20)))
fig_FC1 = imagesc.clean(df.values)
fig_FC2 = imagesc.clean(df.values, cmap='rainbow')
imagesc.savefig(fig_C1, './docs/figs/clean1.png')
- Underlying implemented is based on imshow
- implementation will behave more-or-less as the one of matlab
- Medium speed
- Various configurations are possible but less then seaborn
- Grid is aligned to the cells
- Possible arguments: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.imshow.html
df = pd.DataFrame(np.random.randint(0,100,size=(10,20)))
fig_M1 = imagesc.plot(df.values)
fig_M2 = imagesc.plot(df.values, cbar=False)
fig_M3 = imagesc.plot(df.values, cbar=False, axis=False)
fig_M4 = imagesc.plot(df.values, cbar=False, axis=True, linewidth=0.2)
fig_M5 = imagesc.plot(df.values, df.index.values, df.columns.values)
fig_M6 = imagesc.plot(df.values, df.index.values, df.columns.values, cbar=False, linewidth=0.2)
fig_M7 = imagesc.plot(df.values, df.index.values, df.columns.values, grid=True, cbar=False, linewidth=0.2)
fig_M8 = imagesc.plot(df.values, df.index.values, df.columns.values, grid=False, cbar=False, linewidth=0.2)
fig_M9 = imagesc.plot(df.values, df.index.values, df.columns.values, grid=True, cbar=False, linewidth=0.8, linecolor='#ffffff')
fig_M10 = imagesc.plot(df.values, df.index.values, df.columns.values, grid=True, cbar=False, linewidth=0.8, linecolor='#ffffff', cmap='rainbow')
imagesc.savefig(fig, './docs/figs/plot10.png')imagesc.savefig(fig_C1, './docs/figs/fast1.png')
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
import matplotlib.image as mpimg
img=mpimg.imread('./docs/figs/lenna.png')
fig = imagesc.clean(img)
# runtime 1.49
fig = imagesc.fast(img, cbar=False, axis=False)
# runtime: 2.931 seconds
fig = imagesc.plot(img, linewidth=0, cbar=False)
# runtime: 11.042
Please cite imagesc in your publications if this is useful for your research. Here is an example BibTeX entry:
@misc{erdogant2019imagesc,
title={imagesc},
author={Erdogan Taskesen},
year={2019},
howpublished={\url{https://github.com/erdogant/imagesc}},
}
- seaborn https://seaborn.pydata.org/generated/seaborn.heatmap.html
- clustermap https://seaborn.pydata.org/generated/seaborn.clustermap.html
- fast and clean https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.pcolor.html
- plot https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.imshow.html
- Other https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/image_annotated_heatmap.html
- Colormap https://matplotlib.org/examples/color/colormaps_reference.html