Skip to main content

A 3rd party visualization module for PyNiteFEA using plotly

Project description

pynite_plotly: Plotly visualization for PyNiteFEA

Installation

pip install pynite-plotly

Basic Usage

pynite-plotly can be used as a drop-in replacement for PyNite's own PyVista rendering module.

So, simply replace:

from PyNite.Rendering import Renderer

with this:

from pynite_plotly import Renderer

And then visualize your model according to the API for the PyNite renderer:

from PyNite import FEModel3D

model = FEModel3D()

### ... build your model here...

vis = Renderer(model)
vis.render_model()

Additional Features

The Renderer class has a few additional attributes beyond the attributes in the PyNite Renderer. These are useful for modifying colors and line weights of the elements in the plot.

  • .colors - A dict that has keys corresponding to the different elements in the plot
  • .line_widths - A dict that has keys corresponding to the different linear elements in the plot

Change the values of the keys and run .update to see how they affect the plot!

Current Limitations

2024-11-01: I have only implemented rendering frames and loads. I have not implemented plates/quads/area loads. It will take a special effort because plotly renderers meshes (the plates) as triangles but PyNite uses a quad mesh for FEA.

So, to render everything like PyVista will require remeshing the quad mesh as triangles and having the ability to plot the lines of the quad mesh overtop of the triangulated quad mesh which can also have gradient shading according to the results being plotted.

Additionally, I have not implemented plotting of nodes and node labels yet. No real reason but I noticed that they were not implemented in the PyNite Renderer so I just kept chill on it...for now.

Motivation

PyNiteFEA is excellent and has been becoming more so. In v0.0.94 @JWock82 released PyVista visualization to complement the existing VTK visualization. This has been a great improvement in usability since PyVista can run within a Jupyter notebook as opposed to launching a separate operating system window for the visualization (VTK).

To get PyVista running in Jupyter, requires Trame and a load of other dependencies. These dependencies typically lag behind the latest Python version. Additionally, PyVista does not run everywhere on the web yet (like streamlit).

However, plotly has similar 3D plotting capability to PyVista, runs everywhere, and has a light dependency load.

So, using a helper library I created, plotly_3d_primitives, I then copied the original PyNite Rendering module and swapped out the PyVista method names with my new plotly function names. Did a little bit of massaging and...voila! A new rendering module for PyNite!

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

pynite_plotly-0.4.0.tar.gz (87.1 kB view details)

Uploaded Source

Built Distribution

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

pynite_plotly-0.4.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file pynite_plotly-0.4.0.tar.gz.

File metadata

  • Download URL: pynite_plotly-0.4.0.tar.gz
  • Upload date:
  • Size: 87.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pynite_plotly-0.4.0.tar.gz
Algorithm Hash digest
SHA256 93b01e5d27d6716dd2c139726ae09fca344f610597ca8937bef8fd6e68f42351
MD5 7dc77278862f1ca11653362da25b25f4
BLAKE2b-256 30cd72ef24893a9c2b7d9a753884982e43950293477442424878a312683e6485

See more details on using hashes here.

File details

Details for the file pynite_plotly-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pynite_plotly-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pynite_plotly-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32d0e41e3d8e0bf311daa9bd25fb821406d6562f737260898de78b5e9593096f
MD5 7da75a5f11d9200906d213a30e00f883
BLAKE2b-256 3fc6b1094f96c17f7dfa932e43253008b4313cc8dd67af8267fd3474bb289a0c

See more details on using hashes here.

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