šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Book a DemoInstallSign in
Socket

pymatviz

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pymatviz

A toolkit for visualizations in materials informatics

0.16.0
PyPI
Maintainers
1

Logo
pymatviz

A toolkit for visualizations in materials informatics.

Tests This project supports Python 3.10+ PyPI codecov PyPI Downloads Zenodo

If you use pymatviz in your research, see how to cite. Check out 23 existing papers using pymatviz for inspiration!

Installation

pip install pymatviz

See pyproject.toml for available extras like pip install 'pymatviz[brillouin]' to render 3d Brillouin zones.

API Docs

See the /api page.

Usage

See the Jupyter notebooks under examples/ for how to use pymatviz. PRs with additional examples are welcome! šŸ™

matbench_dielectric_eda.ipynbOpen in Google ColabLaunch Codespace
mp_bimodal_e_form.ipynbOpen in Google ColabLaunch Codespace
matbench_perovskites_eda.ipynbOpen in Google ColabLaunch Codespace
mprester_ptable.ipynbOpen in Google ColabLaunch Codespace

Periodic Table

See pymatviz/ptable/ptable_plotly.py. The module supports heatmaps, heatmap splits (multiple values per element), histograms, scatter plots and line plots. All visualizations are interactive through Plotly and support displaying additional data on hover.

[!WARNING] Version 0.16.0 of pymatviz dropped the matplotlib-based functions in ptable_matplotlib.py in https://github.com/janosh/pymatviz/pull/270. Please use the plotly-based functions shown below instead which have feature parity, interactivity and better test coverage.

ptable_heatmap_plotly(atomic_masses)ptable_heatmap_plotly(compositions, log=True) fig-icon
ptable-heatmap-plotly-more-hover-dataptable-heatmap-plotly-log
ptable_hists_plotly(data) fig-iconptable_scatter_plotly(data, mode="markers") fig-icon
ptable-hists-plotlyptable-scatter-plotly-markers
ptable_heatmap_splits_plotly(2_vals_per_elem) fig-iconptable_heatmap_splits_plotly(3_vals_per_elem)
ptable-heatmap-splits-plotly-2ptable-heatmap-splits-plotly-3

Dash app using ptable_heatmap_plotly()

See examples/mprester_ptable.ipynb.

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

Phonons

phonon_bands(bands_dict) fig-iconphonon_dos(doses_dict) fig-icon
phonon-bandsphonon-dos
phonon_bands_and_dos(bands_dict, doses_dict)phonon_bands_and_dos(single_bands, single_dos) fig-icon
phonon-bands-and-dos-mp-2758phonon-bands-and-dos-mp-23907

Composition Clustering

cluster_compositions(compositions, properties, embedding_method, projection_method, n_components=2) fig-iconcluster_compositions(compositions, properties, embedding_method, projection_method, n_components=3)
matbench-perovskites-magpie-pca-2dmatbench-perovskites-magpie-tsne-3d

Visualize 2D or 3D relationships between compositions and properties using multiple embedding and dimensionality reduction techniques:

Embedding methods: One-hot encoding of element fractions, Magpie features (elemental properties), Matscholar element embeddings, MEGNet element embeddings

Dimensionality reduction methods: PCA (linear), t-SNE (non-linear), UMAP (non-linear), Isomap (non-linear), Kernel PCA (non-linear)

Example usage:

import pymatviz as pmv
from pymatgen.core import Composition

compositions = ("Fe2O3", "Al2O3", "SiO2", "TiO2")

# Create embeddings
embeddings = pmv.cluster.composition.one_hot_encode(compositions)
comp_emb_map = dict(zip(compositions, embeddings, strict=True))

# Plot with optional property coloring
fig = pmv.cluster_compositions(
    compositions=comp_emb_map,
    properties=[1.0, 2.0, 3.0, 4.0],  # Optional property values
    prop_name="Property",  # Optional property label
    embedding_method="one-hot",  # or "magpie", "matscholar_el", "megnet_el", etc.
    projection_method="pca",  # or "tsne", "umap", "isomap", "kernel_pca", etc.
    show_chem_sys="shape",  # works best for small number of compositions; "color" | "shape" | "color+shape" | None
    n_components=2,  # or 3 for 3D plots
)
fig.show()

Structure Clustering

On the roadmap but no ETA yet.

Structure

See pymatviz/structure_viz/plotly.py.

structure_3d_plotly(hea_structure)structure_3d_plotly(lco_supercell) fig-icon
hea-structure-3d-plotlylco-structure-3d-plotly
structure_2d_plotly(six_structs) fig-iconstructure_3d_plotly(six_structs) fig-icon
matbench-phonons-structures-2d-plotlymatbench-phonons-structures-3d-plotly

Brillouin Zone

See pymatviz/brillouin.py.

brillouin_zone_3d(cubic_struct) fig-iconbrillouin_zone_3d(hexagonal_struct)
brillouin-cubic-mp-10018brillouin-hexagonal-mp-862690
brillouin_zone_3d(monoclinic_struct) fig-iconbrillouin_zone_3d(orthorhombic_struct)
brillouin-monoclinic-mp-1183089brillouin-volumes-3-cols

X-Ray Diffraction

See pymatviz/xrd.py.

xrd_pattern(pattern) fig-iconxrd_pattern({key1: patt1, key2: patt2})
xrd-patternxrd-pattern-multiple
xrd_pattern(struct_dict, stack="horizontal") fig-iconxrd_pattern(struct_dict, stack="vertical")
xrd-pattern-horizontal-stackxrd-pattern-vertical-stack

Radial Distribution Functions

See pymatviz/rdf/plotly.py.

element_pair_rdfs(pmg_struct)element_pair_rdfs({"A": struct1, "B": struct2}) fig-icon
element-pair-rdfs-Na8Nb8O24element-pair-rdfs-crystal-vs-amorphous

Coordination

See pymatviz/coordination/plotly.py.

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

Sunburst

See pymatviz/sunburst.py.

spacegroup_sunburst([65, 134, 225, ...]) fig-iconchem_sys_sunburst(["FeO", "Fe2O3", "LiPO4", ...]) fig-icon
spg-num-sunburstchem-sys-sunburst-ward-bmg

Treemap

See pymatviz/treemap/chem_sys.py.

chem_sys_treemap(["FeO", "Fe2O3", "LiPO4", ...]) fig-iconchem_sys_treemap(["FeO", "Fe2O3", "LiPO4", ...], group_by="formula")
chem-sys-treemap-formulachem-sys-treemap-ward-bmg
py_pkg_treemap("pymatviz") fig-iconpy_pkg_treemap(["pymatviz", "torch_sim", "pymatgen"])
py-pkg-treemap-pymatvizpy-pkg-treemap-multiple

Rainclouds

See pymatviz/rainclouds.py.

rainclouds(two_key_dict) fig-iconrainclouds(three_key_dict)
rainclouds-bimodalrainclouds-trimodal

Sankey

See pymatviz/sankey.py.

sankey_from_2_df_cols(df_perovskites) fig-iconsankey_from_2_df_cols(df_space_groups)
sankey-spglib-vs-aflow-spacegroupssankey-crystal-sys-to-spg-symbol

Bar Plots

See pymatviz/bar.py.

spacegroup_bar([65, 134, 225, ...], backend="plotly") fig-iconspacegroup_bar(["C2/m", "P-43m", "Fm-3m", ...], backend="plotly")
spg-num-hist-plotlyspg-symbol-hist-plotly

Histograms

See pymatviz/histogram.py.

elements_hist(compositions, log=True, bar_values='count') fig-iconhistogram({'key1': values1, 'key2': values2}) fig-icon
elements-histhistogram-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, ...) fig-icon
density-scatter-plotlydensity-scatter-plotly-blobs
density_scatter(xs, ys, ...) fig-icondensity_scatter_with_hist(xs, ys, ...) fig-icon
density-scatterdensity-scatter-with-hist
density_hexbin(xs, ys, ...) fig-icondensity_hexbin_with_hist(xs, ys, ...) fig-icon
density-hexbindensity-hexbin-with-hist

Uncertainty

See pymatviz/uncertainty.py.

qq_gaussian(y_true, y_pred, y_std) fig-iconqq_gaussian(y_true, y_pred, y_std: dict)
normal-prob-plotnormal-prob-plot-multiple
error_decay_with_uncert(y_true, y_pred, y_std) fig-iconerror_decay_with_uncert(y_true, y_pred, y_std: dict)
error-decay-with-uncerterror-decay-with-uncert-multiple

Classification

See pymatviz/classify/confusion_matrix.py.

confusion_matrix(conf_mat, ...)confusion_matrix(y_true, y_pred, ...) fig-icon
stability-confusion-matrixcrystal-system-confusion-matrix

See pymatviz/classify/curves.py.

roc_curve_plotly(targets, probs_positive) fig-iconprecision_recall_curve_plotly(targets, probs_positive) fig-icon
roc-curve-plotly-multipleprecision-recall-curve-plotly-multiple

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
}

Papers using pymatviz

Sorted by number of citations, then year. Last updated 2025-03-25. Auto-generated from Google Scholar. Manual additions via PR welcome.

Keywords

chemistry

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts