Skip to main content

A toolkit for visualizations in materials informatics

Project description

Logo
pymatviz

A toolkit for visualizations in materials informatics.

Tests This project supports Python 3.10+ PyPI PyPI Downloads Zenodo

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! 🙏

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

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.

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
ptable_hists(data, colormap="coolwarm") ptable_lines(data)
ptable-hists ptable-lines
ptable_scatters(data, colormap="coolwarm") ptable_scatters(data, colormap="coolwarm")
ptable-scatters-parity ptable-scatters-parabola
ptable_heatmap_splits(2_vals_per_elem, colormap="coolwarm", start_angle=135) ptable_heatmap_splits(3_vals_per_elem, colormap="coolwarm", start_angle=90)
ptable-heatmap-splits-2 ptable-heatmap-splits-3

Phonons

See examples/mlff_phonons.ipynb for usage example.

phonon_bands(bands_dict) phonon_dos(doses_dict)
phonon-bands phonon-dos
phonon_bands_and_dos(bands_dict, doses_dict) phonon_bands_and_dos(single_bands, single_dos)
phonon-bands-and-dos-mp-2758 phonon-bands-and-dos-mp-23907

Dash app using ptable_heatmap_plotly()

See examples/mprester_ptable.ipynb.

https://user-images.githubusercontent.com/30958850/181644052-b330f0a2-70fc-451c-8230-20d45d3af72f.mp4

Structure

See pymatviz/structure_viz/(mpl|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)
struct-2d-mp-19017-Li4Mn0.8Fe1.6P4C1.6O16-disordered struct-2d-mp-12712-Hf9Zr9Pd24-disordered
structure_2d_plotly(six_structs) structure_3d_plotly(six_structs)
matbench-phonons-structures-2d-plotly matbench-phonons-structures-3d-plotly

X-Ray Diffraction

See pymatviz/xrd.py.

xrd_pattern(pattern) xrd_pattern({key1: patt1, key2: patt2})
xrd-pattern xrd-pattern-multiple
xrd_pattern(struct_dict, stack="horizontal") xrd_pattern(struct_dict, stack="vertical", title="Custom Title")
xrd-pattern-horizontal-stack xrd-pattern-vertical-stack

Radial Distribution Functions

See pymatviz/rdf/plotly.py.

rdf_plot(rdf) rdf_plot(rdf, rdf2)
element-pair-rdfs-Na8Nb8O24 element-pair-rdfs-crystal-vs-amorphous

Coordination

See pymatviz/coordination/plotly.py.

coordination_hist(struct_dict) coordination_hist(struct_dict, by_element=True)
coordination-hist-single coordination-hist-by-structure-and-element
coordination_vs_cutoff_line(struct_dict, strategy=None) coordination_vs_cutoff_line(struct_dict, strategy=None)
coordination-vs-cutoff-single coordination-vs-cutoff-multiple

Sunburst

See pymatviz/sunburst.py.

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

Rainclouds

See pymatviz/rainclouds.py.

rainclouds(two_key_dict) rainclouds(three_key_dict)
rainclouds-bimodal rainclouds-trimodal

Sankey

See pymatviz/sankey.py.

sankey_from_2_df_cols(df_perovskites) sankey_from_2_df_cols(df_space_groups)
sankey-spglib-vs-aflow-spacegroups sankey-crystal-sys-to-spg-symbol

Histograms

See pymatviz/histogram.py.

spacegroup_bar([65, 134, 225, ...], backend="matplotlib") spacegroup_bar(["C2/m", "P-43m", "Fm-3m", ...], backend="matplotlib")
spg-num-hist-matplotlib spg-symbol-hist-matplotlib
spacegroup_bar([65, 134, 225, ...], backend="plotly") spacegroup_bar(["C2/m", "P-43m", "Fm-3m", ...], backend="plotly")
spg-num-hist-plotly spg-symbol-hist-plotly
elements_hist(compositions, log=True, bar_values='count') histogram({'key1': values1, 'key2': values2})
elements-hist histogram-ecdf

Scatter Plots

See pymatviz/scatter.py.

density_scatter_plotly(df, x=x_col, y=y_col, ...) density_scatter_plotly(df, x=x_col, y=y_col, ...)
density-scatter-plotly density-scatter-plotly-blobs
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

Uncertainty

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 Metrics

See pymatviz/cumulative.py.

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

Classification

See pymatviz/relevance.py.

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

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
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymatviz-0.13.2.tar.gz (159.4 kB view details)

Uploaded Source

Built Distribution

pymatviz-0.13.2-py3-none-any.whl (145.0 kB view details)

Uploaded Python 3

File details

Details for the file pymatviz-0.13.2.tar.gz.

File metadata

  • Download URL: pymatviz-0.13.2.tar.gz
  • Upload date:
  • Size: 159.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pymatviz-0.13.2.tar.gz
Algorithm Hash digest
SHA256 7f4d9e4d2f2d2474c60599226f5c1952cfb51cc6cf30fe81788f36c93d1654d9
MD5 dc711777b1902ab3b41d968fc71ba620
BLAKE2b-256 6066a8a1fdb350fa7d1529e7bda2414f575edbed05f63438e82e7132e872e4f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymatviz-0.13.2.tar.gz:

Publisher: GitHub
  • Repository: janosh/pymatviz
  • Workflow: release.yml
Attestations:
  • Statement type: https://in-toto.io/Statement/v1
    • Predicate type: https://docs.pypi.org/attestations/publish/v1
    • Subject name: pymatviz-0.13.2.tar.gz
    • Subject digest: 7f4d9e4d2f2d2474c60599226f5c1952cfb51cc6cf30fe81788f36c93d1654d9
    • Transparency log index: 146281195
    • Transparency log integration time:

File details

Details for the file pymatviz-0.13.2-py3-none-any.whl.

File metadata

  • Download URL: pymatviz-0.13.2-py3-none-any.whl
  • Upload date:
  • Size: 145.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pymatviz-0.13.2-py3-none-any.whl
Algorithm Hash digest
SHA256 da6d442e76b0d4f7d1ce441d26c50ea11a300f0ad524c2568fba46cc05cd6e36
MD5 94f1433d19709f686f07c75e4a5fb3af
BLAKE2b-256 38d8ec1cd32cc037f7ce07b522584d484391e5bb6fad987a5abc802273957e85

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymatviz-0.13.2-py3-none-any.whl:

Publisher: GitHub
  • Repository: janosh/pymatviz
  • Workflow: release.yml
Attestations:
  • Statement type: https://in-toto.io/Statement/v1
    • Predicate type: https://docs.pypi.org/attestations/publish/v1
    • Subject name: pymatviz-0.13.2-py3-none-any.whl
    • Subject digest: da6d442e76b0d4f7d1ce441d26c50ea11a300f0ad524c2568fba46cc05cd6e36
    • Transparency log index: 146281196
    • Transparency log integration time:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page