Skip to content

3d Visualizations of optimization problems #581

New issue

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

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

Already on GitHub? Sign in to your account

Open
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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants