Skip to content

3d Visualizations of optimization problems #581

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

shammeer-s
Copy link

This PR extends the existing slice_plot functionality to support 2D and 3D visualizations of objective functions. The main enhancements include:

  • Support for 3D surface plots and 2D contour plots using Plotly
  • Pairwise visualization grid similar to seaborn.pairplot for higher-dimensional problems
  • Separation of concerns: Function evaluations are decoupled from plotting logic
  • Parallelized evaluations using batch evaluators for efficient performance
  • Modular function evaluation handled in plot_data.py
  • Unified interface: Users can choose between "slice", "3d", or "contour" via the projection argument in slice_plot

Future Improvements

  • Clean up repeated code by moving common plot logic into helper functions.
  • Simplify 3D subplot layout and camera setup to make the code easier to manage.
  • Add interactive elements or show useful plots (like 1D slices) on the diagonal of pairwise plots.
  • Move the 3D and contour plot logic into their own well-named functions for better structure.
  • Rename some function parameters to make their purpose easier to understand.
  • Use an enum to clearly define chart types and make the code safer and easier to follow.

- Modularized code into distinct functions for preprocessing, evaluation, and plotting.
- Introduced `_plot_slice` and `_plot_pairwise` to handle different projection types.
- Simplified and optimized logic for generating grid and evaluation points.
- Improved code readability by removing redundant code and separating responsibilities.
…ion components for improved modularity and maintainability.

Added documentation strings for function definition on plot_data.py.
- Added detailed docstrings to improve clarity and usability
- Made minor changes to code structure for better readability and maintainability
@shammeer-s shammeer-s marked this pull request as draft April 13, 2025 18:50
@shammeer-s shammeer-s marked this pull request as ready for review April 13, 2025 18:51
Copy link
Member

@timmens timmens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey,

Thanks for the PR!

Before I start a thorough review of your changes, lets tackle some high-level issues:

  1. Can you move the code from plot_data.py into the slice_plot.py module, unless it is also used in other plotting functions.
  2. Can you re-order the functions such that the function that is exported by the module (slice_plot) is at the beginning, then the private slice plot functions, and lastly the plotting data code.
  3. Can you create a small notebook where you showcase the usage of the new features (this does not need to pushed, you can just upload it in a comment here).

Thanks a lot! If you have any questions, let me know here or on Zulip!

@shammeer-s
Copy link
Author

Hey @timmens,

Thanks for the feedback!

Sure, I’ll move the code from plot_data.py into slice_plot.py as suggested, since it’s not being used elsewhere. I’ll also re-order the functions so that the exported slice_plot function comes first.

I'll work on a small notebook to demonstrate the new features and share it here once it’s ready.

Also, I’ll take this opportunity to improve the modularity of the plotting logic a bit—cleaning it up should make the flow easier to understand.

Let me know if there's anything else I should add or keep in mind!

@shammeer-s shammeer-s marked this pull request as draft April 25, 2025 22:13
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants