ChernoffFace Python package
Introduction
This Python package implements the function chernoff_face that
generates Chernoff face diagrams.
The design, implementation strategy, and unit tests closely resemble
the Wolfram Repository Function (WFR)
ChernoffFace,
[AAf1], and the original Mathematica package
“ChernoffFaces.m”,
[AAp1].
Installation
To install from GitHub use the shell command:
python -m pip install git+https://github.com/antononcube/Python-packages.git#egg=ChernoffFace\&subdirectory=ChernoffFace
To install from PyPI:
python -m pip install ChernoffFace
Usage examples
Setup
from ChernoffFace import *
import numpy
import matplotlib.cm
Random data
Here is an example of generating a table (matplotlib figure object) of Chernoff faces over
the rows of a two-dimensional array of real numbers:
# Generate data
numpy.random.seed(32)
data = numpy.random.rand(16, 12)
# Make Chernoff faces
fig = chernoff_face(data=data,
titles=[str(x) for x in list(range(len(data)))],
color_mapper=matplotlib.cm.Pastel1)
# Display
fig.tight_layout()
matplotlib.pyplot.show()
(To be clear, each face represents a row of the given array.)
Employee attitude data
Get Employee attitude data
dfData=load_employee_attitude_data_frame()
dfData.head()
## Rating Complaints Privileges Learning Raises Critical Advancement
## 0 43 51 30 39 61 92 45
## 1 63 64 51 54 63 73 47
## 2 71 70 68 69 76 86 48
## 3 61 63 45 47 54 84 35
## 4 81 78 56 66 71 83 47
Rescale the variables (columns):
dfData2 = variables_rescale(dfData)
dfData2.head()
## Rating Complaints Privileges Learning Raises Critical Advancement
## 0 0.066667 0.264151 0.000000 0.121951 0.400000 1.000000 0.425532
## 1 0.511111 0.509434 0.396226 0.487805 0.444444 0.558140 0.468085
## 2 0.688889 0.622642 0.716981 0.853659 0.733333 0.860465 0.489362
## 3 0.466667 0.490566 0.283019 0.317073 0.244444 0.813953 0.212766
## 4 0.911111 0.773585 0.490566 0.780488 0.622222 0.790698 0.468085
Make the corresponding Chernoff faces:
fig = chernoff_face(data=dfData2,
n_columns=5,
long_face=False,
color_mapper=matplotlib.cm.tab20b,
figsize=(8, 8), dpi=200)
Display:
fig.tight_layout()
matplotlib.pyplot.show()
USA arrests data
Get USA arrests data:
dfData=load_usa_arrests_data_frame()
dfData.head()
## StateName Murder Assault UrbanPopulation Rape
## 0 Alabama 13.2 236 58 21.2
## 1 Alaska 10.0 263 48 44.5
## 2 Arizona 8.1 294 80 31.0
## 3 Arkansas 8.8 190 50 19.5
## 4 California 9.0 276 91 40.6
Rescale the variables:
dfData2 = variables_rescale(dfData)
dfData2.head()
## StateName Murder Assault UrbanPopulation Rape
## 0 Alabama 0.746988 0.654110 0.440678 0.359173
## 1 Alaska 0.554217 0.746575 0.271186 0.961240
## 2 Arizona 0.439759 0.852740 0.813559 0.612403
## 3 Arkansas 0.481928 0.496575 0.305085 0.315245
## 4 California 0.493976 0.791096 1.000000 0.860465
Make the corresponding Chernoff faces using USA state names as titles:
fig = chernoff_face(data=dfData2,
n_columns=5,
long_face=False,
color_mapper=matplotlib.cm.tab20c_r,
figsize=(12, 12), dpi=200)
Display:
fig.tight_layout()
matplotlib.pyplot.show()
Additional comments
- In order to have "prettier" and "tighter" looking diagrams (Chernoff faces) by default
chernoff_facemakes wide faces.- The argument
long_facecontrols the shape of the faces. ChernoffFacein [AAf1] makes long faces.
- The argument
- Additional functions have to be implemented that summarize datasets using Chernoff faces.
- Such summary diagrams are given in [AA1, AAf1].
- For a given dataset certain color palettes (color mappers) would provide more insightful views.
- For example:
- Florida is a clear outlier in the USA arrests plot above
- Certain clustering of the states is also hinted by faces with similar colors.
- For example:
References
Articles
[AA1] Anton Antonov, “Making Chernoff faces for data visualization”, (2016), MathematicaForPrediction at WordPress.
Functions and packages
[AAf1] Anton Antonov,
ChernoffFace,
(2019), Wolfram Function
Repository.
[AAp1] Anton Antonov, Chernoff faces implementation in Mathematica, (2016), MathematicaForPrediction at GitHub.
Metadata
Release files for ChernoffFace 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ChernoffFace-0.1.4.tar.gz | 14.8 kB | Without provenance | Details for ChernoffFace-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ChernoffFace-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for ChernoffFace-0.1.4-py3-none-any.whl |
Total release size: 31.1 kB
Release files / ChernoffFace-0.1.4.tar.gz
| Download URL | ChernoffFace-0.1.4.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6263568df42dcef73ef40f8e772246566aedbca0ee73f96443008e211c21bf99
|
|
BLAKE2b-256 checksum How to use checksums |
8775b5b7c58567552bac73dc8314ef8c71b951ce1de00dddaee681d61c88e258
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / ChernoffFace-0.1.4-py3-none-any.whl
| Download URL | ChernoffFace-0.1.4-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5cd4fbf95ad4775f35ce07d5c4a9f910523dd6be3a760864da79b9c526a9994
|
|
BLAKE2b-256 checksum How to use checksums |
0d3a84b8ce2e3afdf4b9c25348cf593c08db867724fb7b876a3f19c594386d3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Security for ChernoffFace 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.