Skip to content

Conversation

@juanmanzanero
Copy link

Dear @brenocq

Thank you for this very nice plotting library. I'd like to contribute with some features that me and others might benefit from:

  • Possibility to choose ZBuffer for items, since sometimes you want to force something to be back/front of other items
  • Legend Popup (as in ImPlot)
  • Legend Custom Font: sometimes you'd want a custom font (e.g. monospaced) for a legend. This something I also have in my own copy of ImPlot but since that repository is not very active, I have not contributed to it.
  • Annotations (as in ImPlot)
  • Auto Scale the Box: move the NDC Scalings to best fit the box while making sure the labels are seen
  • Stretch to Fit the box: this is something that matlab has in its "axis normal" mode. It conflicts with axis equal, but hey.

To implement these I had to:

  • Edit the way the axis labels are positioned: delta position in pixel rather than in NDC
  • Edit the way the ticks are measured: size in pixels rather than NDC

And also:

  • I have changed the way the number of ticks are computed because for small sizes I was getting 33.3333 66.6666 and so on.

Thank you for your time.

@github-actions github-actions bot added the status:review The task is under review label Nov 11, 2025
@brenocq
Copy link
Owner

brenocq commented Nov 14, 2025

Hi @juanmanzanero! That's a lot of features hahahha thank you for pouring so much time into ImPlot3D

I suggest you to create 6 feature requests issues (one for each feature that you implemented), and create one separate PR for each feature. Each feature PR should also contain a demo for the new feature (this helps me test the PR, and quite nice for people exploring the ImPlot3D demos to see your feature in action).

I probably need to document a bit better the feature contribution process kkkkk

@brenocq brenocq added type:feat New feature or request prio:high High priority labels Nov 14, 2025
@brenocq
Copy link
Owner

brenocq commented Nov 14, 2025

Oh, I think this needs to change:

-IMPLOT3D_API void Annotation(double x, double y, double z, const ImVec4& col, const ImVec2& pix_offset, bool clamp, const char* fmt, ...)           IM_FMTARGS(6);
-IMPLOT3D_API void AnnotationV(double x, double y, double z, const ImVec4& col, const ImVec2& pix_offset, bool clamp, const char* fmt, va_list args) IM_FMTLIST(6);
+IMPLOT3D_API void Annotation(double x, double y, double z, const ImVec4& col, const ImVec2& pix_offset, bool clamp, const char* fmt, ...)           IM_FMTARGS(7);
+IMPLOT3D_API void AnnotationV(double x, double y, double z, const ImVec4& col, const ImVec2& pix_offset, bool clamp, const char* fmt, va_list args) IM_FMTLIST(7);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

prio:high High priority status:review The task is under review type:feat New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants