
Security News
Official Go SDK for MCP in Development, Stable Release Expected in August
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.
A toolkit for visualizations in materials informatics.
If you use
pymatviz
in your research, see how to cite. Check out 23 existing papers usingpymatviz
for inspiration!
pip install pymatviz
See pyproject.toml
for available extras like pip install 'pymatviz[brillouin]'
to render 3d Brillouin zones.
See the /api page.
See the Jupyter notebooks under examples/
for how to use pymatviz
. PRs with additional examples are welcome! š
matbench_dielectric_eda.ipynb | Launch Codespace | |
mp_bimodal_e_form.ipynb | Launch Codespace | |
matbench_perovskites_eda.ipynb | Launch Codespace | |
mprester_ptable.ipynb | Launch Codespace |
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 inptable_matplotlib.py
in https://github.com/janosh/pymatviz/pull/270. Please use theplotly
-based functions shown below instead which have feature parity, interactivity and better test coverage.
ptable_heatmap_plotly()
See examples/mprester_ptable.ipynb
.
phonon_bands(bands_dict) | phonon_dos(doses_dict) |
---|---|
phonon_bands_and_dos(bands_dict, doses_dict) | phonon_bands_and_dos(single_bands, single_dos) |
cluster_compositions(compositions, properties, embedding_method, projection_method, n_components=2) | cluster_compositions(compositions, properties, embedding_method, projection_method, n_components=3) |
---|---|
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()
On the roadmap but no ETA yet.
See pymatviz/structure_viz/plotly.py
.
structure_3d_plotly(hea_structure) | structure_3d_plotly(lco_supercell) |
---|---|
structure_2d_plotly(six_structs) | structure_3d_plotly(six_structs) |
brillouin_zone_3d(cubic_struct) | brillouin_zone_3d(hexagonal_struct) |
---|---|
brillouin_zone_3d(monoclinic_struct) | brillouin_zone_3d(orthorhombic_struct) |
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") |
element_pair_rdfs(pmg_struct) | element_pair_rdfs({"A": struct1, "B": struct2}) |
---|---|
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) |
See pymatviz/sunburst.py
.
spacegroup_sunburst([65, 134, 225, ...]) | chem_sys_sunburst(["FeO", "Fe2O3", "LiPO4", ...]) |
---|---|
See pymatviz/treemap/chem_sys.py
.
chem_sys_treemap(["FeO", "Fe2O3", "LiPO4", ...]) | chem_sys_treemap(["FeO", "Fe2O3", "LiPO4", ...], group_by="formula") |
---|---|
py_pkg_treemap("pymatviz") | py_pkg_treemap(["pymatviz", "torch_sim", "pymatgen"]) |
rainclouds(two_key_dict) | rainclouds(three_key_dict) |
---|---|
See pymatviz/sankey.py
.
sankey_from_2_df_cols(df_perovskites) | sankey_from_2_df_cols(df_space_groups) |
---|---|
See pymatviz/bar.py
.
spacegroup_bar([65, 134, 225, ...], backend="plotly") | spacegroup_bar(["C2/m", "P-43m", "Fm-3m", ...], backend="plotly") |
---|---|
elements_hist(compositions, log=True, bar_values='count') | histogram({'key1': values1, 'key2': values2}) |
---|---|
See pymatviz/scatter.py
.
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) |
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) |
---|---|
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
}
pymatviz
Sorted by number of citations, then year. Last updated 2025-03-25. Auto-generated from Google Scholar. Manual additions via PR welcome.
FAQs
A toolkit for visualizations in materials informatics
We found that pymatviz demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Ā It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.
Security News
New research reveals that LLMs often fake understanding, passing benchmarks but failing to apply concepts or stay internally consistent.
Security News
Django has updated its security policies to reject AI-generated vulnerability reports that include fabricated or unverifiable content.