Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erdogant/imagesc
Make quick and beautiful heatmaps
https://github.com/erdogant/imagesc
clustering clustermap d3js heatmap imagesc interactive plot seaborn seaborn-plots
Last synced: 27 days ago
JSON representation
Make quick and beautiful heatmaps
- Host: GitHub
- URL: https://github.com/erdogant/imagesc
- Owner: erdogant
- License: other
- Created: 2020-01-15T22:23:29.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-07T12:33:37.000Z (about 2 years ago)
- Last Synced: 2024-10-04T14:07:42.408Z (about 1 month ago)
- Topics: clustering, clustermap, d3js, heatmap, imagesc, interactive, plot, seaborn, seaborn-plots
- Language: Python
- Homepage: https://erdogant.github.io/imagesc
- Size: 6.93 MB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# imagesc
[![Python](https://img.shields.io/pypi/pyversions/imagesc)](https://img.shields.io/pypi/pyversions/imagesc)
[![PyPI Version](https://img.shields.io/pypi/v/imagesc)](https://pypi.org/project/imagesc/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/erdogant/imagesc/blob/master/LICENSE)
[![Github Forks](https://img.shields.io/github/forks/erdogant/imagesc.svg)](https://github.com/erdogant/imagesc/network)
[![GitHub Open Issues](https://img.shields.io/github/issues/erdogant/imagesc.svg)](https://github.com/erdogant/imagesc/issues)
[![Project Status](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)
[![Downloads](https://pepy.tech/badge/imagesc/month)](https://pepy.tech/project/imagesc/month)
[![Downloads](https://pepy.tech/badge/imagesc)](https://pepy.tech/project/imagesc)* 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! ⭐️**
#### Functions in imagesc
```python
# 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)```
## Contents
- [Installation](#-installation)
- [Requirements](#-Requirements)
- [Quick Start](#-quick-start)
- [Contribute](#-contribute)
- [Citation](#-citation)
- [Maintainers](#-maintainers)
- [License](#-copyright)## Installation
* 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.## Requirements
```python
# Note that: seaborn is only required when using **seaborn** or **cluster** functions.
pip install -r requirements.txt
```## Installation from Pypi
```
pip install imagesc
```## Import imagesc package
```python
import imagesc as imagesc
```### d3
* Implemention is based on **d3**
* Interactive
* Stand-alone
* https://d3-graph-gallery.com```python
df = pd.DataFrame(np.random.randint(0, 100, size=(50, 50)))
imagesc.d3(df, vmax=1)
```
### seaborn
* 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```python
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')
```
A
B
C
D### cluster
* 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```python
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')
```
C1
C2
C3
C4### fast
* 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```python
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')
```
F1
F2
F3
F4
F5
F6### clean
* 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```python
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')
```
F1
F2### plot
* 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```python
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### Speed:
```python
import matplotlib.image as mpimg
img=mpimg.imread('./docs/figs/lenna.png')fig = imagesc.clean(img)
# runtime 1.49fig = imagesc.fast(img, cbar=False, axis=False)
# runtime: 2.931 secondsfig = imagesc.plot(img, linewidth=0, cbar=False)
# runtime: 11.042
```
**fast**
**clean**
**plot**
### Citation
Please cite imagesc in your publications if this is useful for your research. Here is an example BibTeX entry:
```BibTeX
@misc{erdogant2019imagesc,
title={imagesc},
author={Erdogan Taskesen},
year={2019},
howpublished={\url{https://github.com/erdogant/imagesc}},
}
```### References
* 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### Maintainer
* Erdogan Taskesen, github: [erdogant](https://github.com/erdogant)
* Contributions are welcome.
* If you wish to buy me a Coffee for this work, it is very appreciated :)