Skip to main content

Publication-quality reaction energy diagrams for computational chemistry

Project description

chemdiagrams

PyPI version Python versions Documentation Changelog License: MIT DOI

A Python package for creating publication-quality reaction energy diagrams with Matplotlib.

Title Image

Installation

You can use the latest release by installing it from PyPi:

pip install chemdiagrams

Requirements: Python ≥ 3.10, Matplotlib ≥ 3.7, NumPy ≥ 1.23, SciPy ≥ 1.10

Features

  • Multiple reaction paths on a single diagram
  • Nine connector styles: dotted, solid, broken dotted, broken solid, spline dotted, spline solid, broken spline dotted, broken spline solid or none
  • Five diagram styles: open, halfboxed, boxed, twosided, borderless
  • Automatic, stacked, naïve, and averaged energy label placement (numbering)
  • Custom text labels for each path at each position
  • Energy difference bars with optional whiskers
  • Axis break markers for both x and y axes
  • Image placement along the diagram, with automatic collision avoidance and pixel-accurate scaling options
  • Full access to the underlying Matplotlib objects for fine-grained customisation
  • Customizable templates for consistent styling across multiple diagrams
  • Possibility to insert multiple diagrams into a single figure using external Matplotlib axes (e.g. plt.subplots)

Documentation

Full documentation with usage instructions, examples, and API reference is available at https://tonner-zech-group.github.io/chem-diagrams/.

Quickstart

Drawing paths

from chemdiagrams import EnergyDiagram

dia = EnergyDiagram()

dia.draw_path(
    x_data=[0, 1, 2, 3, 4, 5],
    y_data=[0, -13, 22, 75, 39, 20],
    color="blue",
    path_name="Pathway A",
    linetypes=[2, 3, 4, -1, 0],
)
dia.draw_path(
    x_data=[0, 1, 2, 3, 5],
    y_data=[0, -25, 20, 50, 6],
    color="red",
    path_name="Pathway B",
)

dia.legend(fontsize=7)
dia.add_numbers_auto()
dia.set_xlabels(["A", "B", "C", "D", "E", "F"])
dia.ax.set_ylabel("Energy / kJ mol$^{-1}$", fontsize=8)
dia.show()

Multiple paths

Connector styles (linetypes): 0 none, 1 dotted (default), -1 dotted with gap, 2 solid, -2 solid with gap, 3 dotted spline, -3 dotted spline with gap, 4 solid spline, -4 solid spline with gap. A single integer applies the same style to all segments.

Diagram styles

dia = EnergyDiagram(style="halfboxed")  # open | halfboxed | boxed | twosided | borderless

Diagram styles

Energy labels

dia.add_numbers_auto()       # recommended
dia.add_numbers_stacked()
dia.add_numbers_naive()
dia.add_numbers_average()

Numbering styles

Energy difference bars

dia.draw_difference_bar(
    x=3,
    y_start_end=(-25, 0),
    description=r"$\Delta E_\mathrm{R}$: ",
    x_whiskers=(5, 0),
    left_side=True,
)

Difference bar

Images

dia.add_image_series_in_plot(
    ["img0.png", "img1.png", "img2.png", "img3.png", "img4.png"],
    y_placement="auto",
    width=0.6,
    proportional_scaling=True,
)

Image series

Saving figures

dia.fig.savefig("diagram.png", dpi=300, bbox_inches="tight")
dia.fig.savefig("diagram.pdf", bbox_inches="tight")

For full documentation on all parameters and features, see https://tonner-zech-group.github.io/chem-diagrams/.

Examples

Examples can be found in the (documentation). A set of even more examples is available in examples/example_use.ipynb. The latter, however, is not actively maintained anymore and may be outdated with respect to the latest version of the package.

Citation

If you use chemdiagrams in published work, please consider citing the repository:

Tim Bastian Enders, chemdiagrams, https://github.com/Tonner-Zech-Group/chem-diagrams, https://doi.org/10.5281/zenodo.18957965

License

MIT — see LICENSE for details.

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

chemdiagrams-0.5.2.tar.gz (56.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chemdiagrams-0.5.2-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file chemdiagrams-0.5.2.tar.gz.

File metadata

  • Download URL: chemdiagrams-0.5.2.tar.gz
  • Upload date:
  • Size: 56.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chemdiagrams-0.5.2.tar.gz
Algorithm Hash digest
SHA256 9e07f08e93258fde01c5bf3a395deae2d5fb209803c22fec3836a7df90a6ff74
MD5 3692aafe6903535e842e4e2dbd527ab8
BLAKE2b-256 c37351b699982aeba9298fee8dfd9512dfdbef9d5bc8331de737b2a9529f30fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for chemdiagrams-0.5.2.tar.gz:

Publisher: publish.yml on Tonner-Zech-Group/chem-diagrams

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chemdiagrams-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: chemdiagrams-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chemdiagrams-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ee6f77b9c4208bba92db388595b8e9dc8efb13c05401a1b7155b3d93429ebc3c
MD5 cf5e3ef6e39bd512b81992aac74c36ed
BLAKE2b-256 e8fbda810a2822a686c317dd73c412db837591d0b33ad0e339dff4b85e0561cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for chemdiagrams-0.5.2-py3-none-any.whl:

Publisher: publish.yml on Tonner-Zech-Group/chem-diagrams

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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