/pymatviz

A toolkit for visualizations in materials informatics.

Primary LanguagePythonMIT LicenseMIT

Logo
pymatviz

A toolkit for visualizations in materials informatics.

Tests pre-commit.ci status This project supports Python 3.8+ PyPI PyPI Downloads

Note: This project is not associated with or endorsed by pymatgen, but aims to complement it with additional plotting functionality.

Installation

pip install pymatviz

API Docs

See the /api page.

Usage

See the Jupyter notebooks under examples/ for how to use pymatviz.

matbench_dielectric_eda.ipynb Launch Codespace Binder Open in Google Colab
mp_bimodal_e_form.ipynb Launch Codespace Binder Open in Google Colab
matbench_perovskites_eda.ipynb Launch Codespace Binder Open in Google Colab
mprester_ptable.ipynb Launch Codespace Binder Open in Google Colab

Periodic Table

See pymatviz/ptable.py. Heat maps of the periodic table can be plotted both with matplotlib and plotly. plotly supports displaying additional data on hover or full interactivity through Dash.

ptable_heatmap(compositions, log=True) ptable_heatmap_ratio(comps_a, comps_b)
ptable-heatmap ptable-heatmap-ratio
ptable_heatmap_plotly(atomic_masses) ptable_heatmap_plotly(compositions, log=True)
ptable-heatmap-plotly-more-hover-data ptable-heatmap-plotly-log

Dash app using ptable_heatmap_plotly()

See examples/mprester_ptable.ipynb.

2022-07-28-ptable_heatmap_plotly-dash-example.mp4

Sunburst

See pymatviz/sunburst.py.

spacegroup_sunburst([65, 134, 225, ...]) spacegroup_sunburst(["C2/m", "P-43m", "Fm-3m", ...])
spg-num-sunburst spg-symbol-sunburst

Sankey

See pymatviz/sankey.py.

sankey_from_2_df_cols(df_perovskites) sankey_from_2_df_cols(df_rand_ints)
sankey-spglib-vs-aflow-spacegroups sankey-from-2-df-cols-randints

Structure

See pymatviz/structure_viz.py. Currently structure plotting is only supported with matplotlib in 2d. 3d interactive plots (probably with plotly) are on the road map.

plot_structure_2d(mp_19017) plot_structure_2d(mp_12712)
struct-2d-mp-19017-Li4Mn0.8Fe1.6P4C1.6O16-disordered struct-2d-mp-12712-Hf9Zr9Pd24-disordered

matbench-phonons-structures-2d

Histograms

See pymatviz/histograms.py.

spacegroup_hist([65, 134, 225, ...]) spacegroup_hist(["C2/m", "P-43m", "Fm-3m", ...])
spg-num-hist spg-symbol-hist
residual_hist(y_true, y_pred) hist_elemental_prevalence(compositions, log=True, bar_values='count')
residual-hist hist-elemental-prevalence

Parity Plots

See pymatviz/parity.py.

density_scatter(xs, ys, ...) density_scatter_with_hist(xs, ys, ...)
density-scatter density-scatter-with-hist
density_hexbin(xs, ys, ...) density_hexbin_with_hist(xs, ys, ...)
density-hexbin density-hexbin-with-hist
scatter_with_err_bar(xs, ys, yerr, ...) residual_vs_actual(y_true, y_pred, ...)
scatter-with-err-bar residual-vs-actual

Uncertainty Calibration

See pymatviz/uncertainty.py.

qq_gaussian(y_true, y_pred, y_std) qq_gaussian(y_true, y_pred, y_std: dict)
normal-prob-plot normal-prob-plot-multiple
error_decay_with_uncert(y_true, y_pred, y_std) error_decay_with_uncert(y_true, y_pred, y_std: dict)
error-decay-with-uncert error-decay-with-uncert-multiple

Cumulative Error & Residual

See pymatviz/cumulative.py.

cumulative_error(preds, targets) cumulative_residual(preds, targets)
cumulative-error cumulative-residual

Classification Metrics

See pymatviz/relevance.py.

roc_curve(targets, proba_pos) precision_recall_curve(targets, proba_pos)
roc-curve precision-recall-curve

Correlation

See pymatviz/correlation.py.

marchenko_pastur(corr_mat, gamma=ncols/nrows) marchenko_pastur(corr_mat_significant_eval, gamma=ncols/nrows)
marchenko-pastur marchenko-pastur-significant-eval

Glossary

  1. Residual y_res = y_true - y_pred: The difference between ground truth target and model prediction.
  2. Error y_err = abs(y_true - y_pred): Absolute error between target and model prediction.
  3. Uncertainty y_std: The model's estimate for its error, i.e. how much the model thinks its prediction can be trusted. (std for standard deviation.)