question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Skewed heatmap / image / isosurface...

See original GitHub issue

Hi!

I have scientific data represented in 3D grids. Heatmaps and isosurfaces are great for displaying them. However, in some cases the axes of the grid are not x, y and z, but some other direction in space. Then, I would like to somehow see the “skewed” images. I believe it is not possible in plotly to specify the “direction” of the axes in these kind of traces, is it? I don’t know how hard it would be to implement, but it would be extremely useful.

In case this is not feasible or you are not interested in implementing it, could you suggest a workaround? I’m quite lost on this 😃

PS: Sorry if this belongs to plotlyjs github page, I’m not sure.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:10

github_iconTop GitHub Comments

2reactions
empetcommented, Jul 23, 2020

@pfebrer96 An instance of the class go.Isosurface is defined by plotly.js as a Mesh3d trace, with vertices and faces (triangles) returned by the Marching Cube algorithm. This algorithm acts on 3D grids associated to a parallelepiped with sides parallel to the standard axes, i.e. axes of directions e1=(1, 0, 0), e2=(0,1,0), e3=(0,0,1). @archmoj can give more details on how this algorithm works for go.Isosurface

If go.Isosurface had a transformation attribute, i.e. an array of shape (3,3), and positive determinant, T=np.array([u1, u2, u3]).transpose(), to map vertex coordinates resulted from marching cube triangulation, then we could simply define an isosurface carved within a volume with sides of directions u1, u2, u3. Namely it could be defined as a Mesh3D having as vertices, the T-transformed initial vertices, and the same faces. See a workaround for this procedure in this notebook https://chart-studio.plotly.com/~empet/15738.

Notice that unlike the isosurfaces defined as go.Isosurface(s), the isosurfaces constructed by the method presented in the above Jupyter Notebook can be colored according to vertex intensities (defined by a scalar field on the isosurface).

If you intend to propose a PR, for such isosurfaces, then it must be posted on plotly.js, not here.

0reactions
pfebrercommented, Aug 1, 2020

This is exactly what I needed! Thank you very much 😃

With that, I have all the workarounds that I needed, so you can close this issue if you want.

Cheers and I really appreciate the help!

Read more comments on GitHub >

github_iconTop Results From Across the Web

[PDF] On Histograms and Isosurface Statistics - ResearchGate
PDF | In this paper, we show that histograms represent spatial function distributions with a nearest neighbour interpolation.
Read more >
Computational method for calculating fluorescence intensities ...
We present a method specifically designed for the quantification of three dimensional data sets that identifies volumetric structures and evaluates signal ...
Read more >
MATLAB 3-D Visualization - Computing Tutor
“Texture Mapping” on page 1-25 — Texture mapping displays a 2-D image ... The first step is to draw the isosurface and plot...
Read more >
Harnessing the Power of Visualization 'Concept to Execution' - SDSC
Contours, Isosurface And Explicit. Geometry. • Volumetric ... Images: Mathworks.com (Heatmap example) ... Skew scaling can assign either high or low.
Read more >
Manipulating Axes Aspect Ratio - MATLAB & Simulink
The axis command works by setting various axes object properties. You can set these properties directly to achieve precisely the effect you want....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found