Awesome
<h1 align="center"> <img src="https://github.com/janosh/pymatviz/raw/main/site/static/favicon.svg" alt="Logo" height="60px"> <br class="hide-in-docs"> pymatviz </h1> <h4 align="center" class="toc-exclude">A toolkit for visualizations in materials informatics.
</h4> <slot name="how-to-cite"></slot>If you use
pymatviz
in your research, see how to cite.
Installation
pip install pymatviz
API Docs
See the /api page.
Usage
See the Jupyter notebooks under examples/
for how to use pymatviz
. PRs with additional examples are welcome! 🙏
Periodic Table
See pymatviz/ptable/ptable_matplotlib.py
and pymatviz/ptable/ptable_plotly.py
. matplotlib
supports heatmaps, heatmap ratios, heatmap splits (multiple values per element), histograms, scatter plots and line plots. plotly
currently only supports heatmaps (PRs to port over other matplotlib
ptable
variants to plotly
are very welcome!). The plotly
heatmap supports displaying additional data on hover or full interactivity through Dash.
Dash app using ptable_heatmap_plotly()
See examples/mprester_ptable.ipynb
.
Phonons
See examples/mlff_phonons.ipynb
for usage example.
phonon_bands(bands_dict) | phonon_dos(doses_dict) |
---|---|
phonon_bands_and_dos(bands_dict, doses_dict) | phonon_bands_and_dos(single_bands, single_dos) |
Structure
See pymatviz/structure_viz/plotly.py
. Currently structure plotting is only supported with matplotlib
in 2d. 3d interactive plots (probably with plotly
) are on the road map.
structure_2d(mp_19017) | structure_2d(mp_12712) |
---|---|
structure_2d_plotly(six_structs) | structure_3d_plotly(six_structs) |
Brillouin Zone
brillouin_zone_3d(cubic_struct) | brillouin_zone_3d(hexagonal_struct) |
---|---|
brillouin_zone_3d(monoclinic_struct) | brillouin_zone_3d(orthorhombic_struct) |
X-Ray Diffraction
See pymatviz/xrd.py
.
xrd_pattern(pattern) | xrd_pattern({key1: patt1, key2: patt2}) |
---|---|
xrd_pattern(struct_dict, stack="horizontal") | xrd_pattern(struct_dict, stack="vertical") |
Radial Distribution Functions
element_pair_rdfs(pmg_struct) | element_pair_rdfs({"A": struct1, "B": struct2}) |
---|---|
Coordination
See pymatviz/coordination/plotly.py
.
coordination_hist(struct_dict) | coordination_hist(struct_dict, by_element=True) |
---|---|
coordination_vs_cutoff_line(struct_dict, strategy=None) | coordination_vs_cutoff_line(struct_dict, strategy=None) |
Sunburst
See pymatviz/sunburst.py
.
spacegroup_sunburst([65, 134, 225, ...]) | spacegroup_sunburst(["C2/m", "P-43m", "Fm-3m", ...]) |
---|---|
Rainclouds
rainclouds(two_key_dict) | rainclouds(three_key_dict) |
---|---|
Sankey
See pymatviz/sankey.py
.
sankey_from_2_df_cols(df_perovskites) | sankey_from_2_df_cols(df_space_groups) |
---|---|
Bar Plots
See pymatviz/bar.py
.
Histograms
elements_hist(compositions, log=True, bar_values='count') | histogram({'key1': values1, 'key2': values2}) |
---|---|
Scatter Plots
See pymatviz/scatter.py
.
Uncertainty
qq_gaussian(y_true, y_pred, y_std) | qq_gaussian(y_true, y_pred, y_std: dict) |
---|---|
error_decay_with_uncert(y_true, y_pred, y_std) | error_decay_with_uncert(y_true, y_pred, y_std: dict) |
Classification
See pymatviz/classify/confusion_matrix.py
.
confusion_matrix(conf_mat, ...) | confusion_matrix(y_true, y_pred, ...) |
---|---|
See pymatviz/classify/curves.py
.
roc_curve_plotly(targets, probs_positive) | precision_recall_curve_plotly(targets, probs_positive) |
---|---|
How to cite pymatviz
See citation.cff
or cite the Zenodo record using the following BibTeX entry:
@software{riebesell_pymatviz_2022,
title = {Pymatviz: visualization toolkit for materials informatics},
author = {Riebesell, Janosh and Yang, Haoyu and Goodall, Rhys and Baird, Sterling G.},
date = {2022-10-01},
year = {2022},
doi = {10.5281/zenodo.7486816},
url = {https://github.com/janosh/pymatviz},
note = {10.5281/zenodo.7486816 - https://github.com/janosh/pymatviz},
urldate = {2023-01-01}, % optional, replace with your date of access
version = {0.8.2}, % replace with the version you use
}