epezent / epezent/implot

Emission spectrum plot and alike

Open
#564 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
6.2k
Forks
693
PR merge metrics
No merged PRs in 30d

Description

I'm looking into creating some emission spectra analysis software, and am looking into a way of displaying such spectra built from data.

As an example, take a look at the cells 15-17 in https://learn.astropy.org/tutorials/2-WavelengthCalibration.html, like:

![2-WavelengthCalibration ipynb_25_0](https://github.com/epezent/implot/assets/2920144/e186de9b-98e5-49be-a939-2a957239f90e)

Usually these images are used as-is in their image form, but I need to have an opportunity to plot them with just the intensity data array for every x.
Because in my case I need to be able to dynamically change the brightness of the lines.

The question is: is that possible to achieve with implot currently? Or if not -- would it be possible to add this kind of plot?

From exploring the available options I found some that kinda get closer to what I need, but not quite:

- The `ColormapScale()` plot is very close, but:
- Hardcoded to only be vertical
- Has no option to set intensity of the particular lines
- The `RenderColorBar()` function that is used as the basis of `ColormapScale()` and `ColormapButton()` looks good, but:
- Is not exposed by the ImPlot.NET bindings that I'm using, and I don't know why. Is there any inherent reason why this function might be hidden, or is it just some peculiar bindings issue and I could just bind and use it?
- Has no option to set intensity of the particular lines
- The `PlotBarGroups()` plot could be used as well, but:
- Relies on the Colormap, which seems to be not-so-immediate among all the features as I don't believe that it relies on a not-so-immediate colormap which can't be changed in runtime (see the requirement of changing the brightness of the lines dynamically).

Currently I don't think it's easily possible to achieve what I need. Maybe it could be possible through some combination of overlayed plots, or a creative use of the existing features. I would really appreciate an advise here. Or it might be better to create a dedicated plot type for this kind of data display, basically which plots a dynamically changing intensity array on a color spectrum (map/palette).

Also I understand that it's probably much much easier to achieve this with a fragment shader, together with the image-showing capability of implot. I think I can perfectly use this way, since I'm working in Unity, and it has everything I need for that, but shaders come with their own restrictions and complications, so I would really like to know if the vertex-based implot version is a viable idea.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.