ImPlot3D: 3D plots for Dear ImGui: lines, scatter, surfaces, meshes, rotated, panned and zoomed with the mouse.
The C++ API of ImPlot3D as it is bound to Python: the entries of the module imgui_bundle.implot3d, in the same order, with their C++ signatures and the headers’ comments. From the stubs: the functions excluded from the bindings, the typedefs and the macros are absent.
Start with: ImPlot3D::BeginPlot, ImPlot3D::EndPlot, ImPlot3D::PlotLine, ImPlot3D::PlotScatter, ImPlot3D::SetupAxes.
implot3d.h¶
Flags & Enumerations¶
Prop_ (enum)¶
Plotting properties. These provide syntactic sugar for creating ImPlot3DSpec from (ImPlot3DProp,value) pairs
| Member | Value | |
|---|---|---|
ImPlot3DProp_LineColor | 0 | Line color; IMPLOT3D_AUTO_COL will use next Colormap color |
ImPlot3DProp_LineColors | 1 | Array of line colors (ImU32*); if None, use LineColor for all |
ImPlot3DProp_LineWeight | 2 | Line weight in pixels |
ImPlot3DProp_FillColor | 3 | Fill color (applies to shaded regions); IMPLOT3D_AUTO_COL will use next Colormap color |
ImPlot3DProp_FillColors | 4 | Array of fill colors (ImU32*); if None, use FillColor for all |
ImPlot3DProp_FillAlpha | 5 | Alpha multiplier (applies to FillColor, FillColors, MarkerFillColor, and MarkerFillColors) |
ImPlot3DProp_Marker | 6 | Marker type |
ImPlot3DProp_MarkerSize | 7 | Size of markers (radius) in pixels |
ImPlot3DProp_MarkerSizes | 8 | Array of marker sizes (float*); if None, use MarkerSize for all |
ImPlot3DProp_MarkerLineColor | 9 | Marker outline color; IMPLOT3D_AUTO_COL will use next LineColor |
ImPlot3DProp_MarkerLineColors | 10 | Array of marker outline colors (ImU32*); if None, use MarkerLineColor for all |
ImPlot3DProp_MarkerFillColor | 11 | Marker fill color; IMPLOT3D_AUTO_COL will use LineColor |
ImPlot3DProp_MarkerFillColors | 12 | Array of marker fill colors (ImU32*); if None, use MarkerFillColor for all |
ImPlot3DProp_Offset | 13 | Data index offset |
ImPlot3DProp_Stride | 14 | Data stride in bytes; IMPLOT3D_AUTO will result in sizeof(T) where T is the type passed to PlotX |
ImPlot3DProp_Flags | 15 | Optional item flags; can be composed from common ImPlot3DItemFlags and/or specialized ImPlot3DXFlags |
Flags_ (enum)¶
Flags for ImPlot3D::BeginPlot()
| Member | Value | |
|---|---|---|
ImPlot3DFlags_None = 0 | 0 | Default |
ImPlot3DFlags_NoTitle = 1 << 0 | 1 << 0 | Hide plot title |
ImPlot3DFlags_NoLegend = 1 << 1 | 1 << 1 | Hide plot legend |
ImPlot3DFlags_NoMouseText = 1 << 2 | 1 << 2 | Hide mouse position in plot coordinates |
ImPlot3DFlags_NoClip = 1 << 3 | 1 << 3 | Disable 3D box clipping |
ImPlot3DFlags_NoMenus = 1 << 4 | 1 << 4 | The user will not be able to open context menus |
ImPlot3DFlags_Equal = 1 << 5 | 1 << 5 | X, Y, and Z axes will be constrained to have the same units/pixel |
ImPlot3DFlags_NoRotate = 1 << 6 | 1 << 6 | Lock rotation interaction |
ImPlot3DFlags_NoPan = 1 << 7 | 1 << 7 | Lock panning/translation interaction |
ImPlot3DFlags_NoZoom = 1 << 8 | 1 << 8 | Lock zoom interaction |
ImPlot3DFlags_NoInputs = 1 << 9 | 1 << 9 | Disable all user inputs |
ImPlot3DFlags_CanvasOnly = ImPlot3DFlags_NoTitle | ImPlot3DFlags_NoLegend | ImPlot3DFlags_NoMouseText, } | Flags_NoTitle | Flags_NoLegend | Flags_NoMouseText |
Cond_ (enum)¶
Represents a condition for SetupAxisLimits etc. (same as ImGuiCond, but we only support a subset of those enums)
| Member | Value | |
|---|---|---|
ImPlot3DCond_None = ImGuiCond_None | Cond_None | No condition (always set the variable), same as _Always |
ImPlot3DCond_Always = ImGuiCond_Always | Cond_Always | No condition (always set the variable) |
ImPlot3DCond_Once = ImGuiCond_Once | Cond_Once | Set the variable once per runtime session (only the first call will succeed) |
Col_ (enum)¶
| Member | Value | |
|---|---|---|
ImPlot3DCol_TitleText | 0 | Title color |
ImPlot3DCol_InlayText | 1 | Color for texts appearing inside of plots |
ImPlot3DCol_FrameBg | 2 | Frame background color |
ImPlot3DCol_PlotBg | 3 | Plot area background color |
ImPlot3DCol_PlotBorder | 4 | Plot area border color |
ImPlot3DCol_LegendBg | 5 | Legend background color |
ImPlot3DCol_LegendBorder | 6 | Legend border color |
ImPlot3DCol_LegendText | 7 | Legend text color |
ImPlot3DCol_AxisText | 8 | Axis label and tick lables color |
ImPlot3DCol_AxisGrid | 9 | Axis grid color |
ImPlot3DCol_AxisTick | 10 | Axis tick color (defaults to AxisGrid) |
ImPlot3DCol_AxisBg | 11 | Background color of axis hover region (defaults to transparent) |
ImPlot3DCol_AxisBgHovered | 12 | Axis hover color (defaults to ImGuiCol_ButtonHovered) |
ImPlot3DCol_AxisBgActive | 13 | Axis active color (defaults to ImGuiCol_ButtonActive) |
ImPlot3DCol_COUNT, } | 14 |
StyleVar_ (enum)¶
Plot styling variables
| Member | Value | |
|---|---|---|
ImPlot3DStyleVar_LineWeight | 0 | float, plot item line weight in pixels |
ImPlot3DStyleVar_Marker | 1 | int, marker specification |
ImPlot3DStyleVar_MarkerSize | 2 | float, marker size in pixels (roughly the marker’s “radius”) |
ImPlot3DStyleVar_FillAlpha | 3 | float, alpha modifier applied to all plot item fills |
ImPlot3DStyleVar_PlotDefaultSize | 4 | ImVec2, default size used when ImVec2(0,0) is passed to BeginPlot |
ImPlot3DStyleVar_PlotMinSize | 5 | ImVec2, minimum size plot frame can be when shrunk |
ImPlot3DStyleVar_PlotPadding | 6 | ImVec2, padding between widget frame and plot area, labels, or outside legends (i.e. main padding) |
ImPlot3DStyleVar_LabelPadding | 7 | ImVec2, padding between axes labels, tick labels, and plot edge |
ImPlot3DStyleVar_ViewScaleFactor | 8 | float, scale factor for 3D view, you can use it to make the whole plot larger or smaller |
ImPlot3DStyleVar_LegendPadding | 9 | ImVec2, legend padding from plot edges |
ImPlot3DStyleVar_LegendInnerPadding | 10 | ImVec2, legend inner padding from legend edges |
ImPlot3DStyleVar_LegendSpacing | 11 | ImVec2, spacing between legend entries |
ImPlot3DStyleVar_COUNT | 12 |
Marker_ (enum)¶
| Member | Value | |
|---|---|---|
ImPlot3DMarker_None = -2 | -2 | No marker |
ImPlot3DMarker_Auto = -1 | -1 | Automatic marker selection |
ImPlot3DMarker_Circle | 0 | Circle marker (default) |
ImPlot3DMarker_Square | 1 | Square maker |
ImPlot3DMarker_Diamond | 2 | Diamond marker |
ImPlot3DMarker_Up | 3 | Upward-pointing triangle marker |
ImPlot3DMarker_Down | 4 | Downward-pointing triangle marker |
ImPlot3DMarker_Left | 5 | Leftward-pointing triangle marker |
ImPlot3DMarker_Right | 6 | Rightward-pointing triangle marker |
ImPlot3DMarker_Cross | 7 | Cross marker (not fillable) |
ImPlot3DMarker_Plus | 8 | Plus marker (not fillable) |
ImPlot3DMarker_Asterisk | 9 | Asterisk marker (not fillable) |
ImPlot3DMarker_COUNT | 10 |
ItemFlags_ (enum)¶
Flags for items
| Member | Value | |
|---|---|---|
ImPlot3DItemFlags_None = 0 | 0 | Default |
ImPlot3DItemFlags_NoLegend = 1 << 0 | 1 << 0 | The item won’t have a legend entry displayed |
ImPlot3DItemFlags_NoFit = 1 << 1 | 1 << 1 | The item won’t be considered for plot fits |
ScatterFlags_ (enum)¶
Flags for PlotScatter
| Member | Value | |
|---|---|---|
ImPlot3DScatterFlags_None = 0 | 0 | Default |
ImPlot3DScatterFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DScatterFlags_NoFit = ImPlot3DItemFlags_NoFit, } | ItemFlags_NoFit |
LineFlags_ (enum)¶
Flags for PlotLine
| Member | Value | |
|---|---|---|
ImPlot3DLineFlags_None = 0 | 0 | Default |
ImPlot3DLineFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DLineFlags_NoFit = ImPlot3DItemFlags_NoFit | ItemFlags_NoFit | |
ImPlot3DLineFlags_Segments = 1 << 10 | 1 << 10 | A line segment will be rendered from every two consecutive points |
ImPlot3DLineFlags_Loop = 1 << 11 | 1 << 11 | The last and first point will be connected to form a closed loop |
ImPlot3DLineFlags_SkipNaN = 1 << 12 | 1 << 12 | NaNs values will be skipped instead of rendered as missing data |
TriangleFlags_ (enum)¶
Flags for PlotTriangle
| Member | Value | |
|---|---|---|
ImPlot3DTriangleFlags_None = 0 | 0 | Default |
ImPlot3DTriangleFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DTriangleFlags_NoFit = ImPlot3DItemFlags_NoFit | ItemFlags_NoFit | |
ImPlot3DTriangleFlags_NoLines = 1 << 10 | 1 << 10 | No lines will be rendered |
ImPlot3DTriangleFlags_NoFill = 1 << 11 | 1 << 11 | No fill will be rendered |
ImPlot3DTriangleFlags_NoMarkers = 1 << 12 | 1 << 12 | No markers will be rendered |
QuadFlags_ (enum)¶
Flags for PlotQuad
| Member | Value | |
|---|---|---|
ImPlot3DQuadFlags_None = 0 | 0 | Default |
ImPlot3DQuadFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DQuadFlags_NoFit = ImPlot3DItemFlags_NoFit | ItemFlags_NoFit | |
ImPlot3DQuadFlags_NoLines = 1 << 10 | 1 << 10 | No lines will be rendered |
ImPlot3DQuadFlags_NoFill = 1 << 11 | 1 << 11 | No fill will be rendered |
ImPlot3DQuadFlags_NoMarkers = 1 << 12 | 1 << 12 | No markers will be rendered |
SurfaceFlags_ (enum)¶
Flags for PlotSurface
| Member | Value | |
|---|---|---|
ImPlot3DSurfaceFlags_None = 0 | 0 | Default |
ImPlot3DSurfaceFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DSurfaceFlags_NoFit = ImPlot3DItemFlags_NoFit | ItemFlags_NoFit | |
ImPlot3DSurfaceFlags_NoLines = 1 << 10 | 1 << 10 | No lines will be rendered |
ImPlot3DSurfaceFlags_NoFill = 1 << 11 | 1 << 11 | No fill will be rendered |
ImPlot3DSurfaceFlags_NoMarkers = 1 << 12 | 1 << 12 | No markers will be rendered |
MeshFlags_ (enum)¶
Flags for PlotMesh
| Member | Value | |
|---|---|---|
ImPlot3DMeshFlags_None = 0 | 0 | Default |
ImPlot3DMeshFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DMeshFlags_NoFit = ImPlot3DItemFlags_NoFit | ItemFlags_NoFit | |
ImPlot3DMeshFlags_NoLines = 1 << 10 | 1 << 10 | No lines will be rendered |
ImPlot3DMeshFlags_NoFill = 1 << 11 | 1 << 11 | No fill will be rendered |
ImPlot3DMeshFlags_NoMarkers = 1 << 12 | 1 << 12 | No markers will be rendered |
ImageFlags_ (enum)¶
Flags for PlotImage
| Member | Value | |
|---|---|---|
ImPlot3DImageFlags_None = 0 | 0 | Default |
ImPlot3DImageFlags_NoLegend = ImPlot3DItemFlags_NoLegend | ItemFlags_NoLegend | |
ImPlot3DImageFlags_NoFit = ImPlot3DItemFlags_NoFit, } | ItemFlags_NoFit |
DummyFlags_ (enum)¶
Flags for PlotDummy
| Member | Value | |
|---|---|---|
ImPlot3DDummyFlags_None = 0 | 0 | Default |
LegendFlags_ (enum)¶
Flags for legends
| Member | Value | |
|---|---|---|
ImPlot3DLegendFlags_None = 0 | 0 | Default |
ImPlot3DLegendFlags_NoButtons = 1 << 0 | 1 << 0 | Legend icons will not function as hide/show buttons |
ImPlot3DLegendFlags_NoHighlightItem = 1 << 1 | 1 << 1 | Plot items will not be highlighted when their legend entry is hovered |
ImPlot3DLegendFlags_Horizontal = 1 << 2 | 1 << 2 | Legend entries will be displayed horizontally |
Location_ (enum)¶
Used to position legend on a plot
| Member | Value | |
|---|---|---|
ImPlot3DLocation_Center = 0 | 0 | Center-center |
ImPlot3DLocation_North = 1 << 0 | 1 << 0 | Top-center |
ImPlot3DLocation_South = 1 << 1 | 1 << 1 | Bottom-center |
ImPlot3DLocation_West = 1 << 2 | 1 << 2 | Center-left |
ImPlot3DLocation_East = 1 << 3 | 1 << 3 | Center-right |
ImPlot3DLocation_NorthWest = ImPlot3DLocation_North | ImPlot3DLocation_West | Location_North | Location_West | Top-left |
ImPlot3DLocation_NorthEast = ImPlot3DLocation_North | ImPlot3DLocation_East | Location_North | Location_East | Top-right |
ImPlot3DLocation_SouthWest = ImPlot3DLocation_South | ImPlot3DLocation_West | Location_South | Location_West | Bottom-left |
ImPlot3DLocation_SouthEast = ImPlot3DLocation_South | ImPlot3DLocation_East | Location_South | Location_East | Bottom-right |
AxisFlags_ (enum)¶
Flags for axis
| Member | Value | |
|---|---|---|
ImPlot3DAxisFlags_None = 0 | 0 | Default |
ImPlot3DAxisFlags_NoLabel = 1 << 0 | 1 << 0 | No axis label will be displayed |
ImPlot3DAxisFlags_NoGridLines = 1 << 1 | 1 << 1 | No grid lines will be displayed |
ImPlot3DAxisFlags_NoTickMarks = 1 << 2 | 1 << 2 | No tick marks will be displayed |
ImPlot3DAxisFlags_NoTickLabels = 1 << 3 | 1 << 3 | No tick labels will be displayed |
ImPlot3DAxisFlags_LockMin = 1 << 4 | 1 << 4 | The axis minimum value will be locked when panning/zooming |
ImPlot3DAxisFlags_LockMax = 1 << 5 | 1 << 5 | The axis maximum value will be locked when panning/zooming |
ImPlot3DAxisFlags_AutoFit = 1 << 6 | 1 << 6 | Axis will be auto-fitting to data extents |
ImPlot3DAxisFlags_Invert = 1 << 7 | 1 << 7 | The axis will be inverted |
ImPlot3DAxisFlags_PanStretch = 1 << 8 | 1 << 8 | Panning in a locked or constrained state will cause the axis to stretch if possible |
ImPlot3DAxisFlags_Lock = ImPlot3DAxisFlags_LockMin | ImPlot3DAxisFlags_LockMax | AxisFlags_LockMin | AxisFlags_LockMax | |
ImPlot3DAxisFlags_NoDecorations = ImPlot3DAxisFlags_NoLabel | ImPlot3DAxisFlags_NoGridLines | ImPlot3DAxisFlags_NoTickLabels, } | AxisFlags_NoLabel | AxisFlags_NoGridLines | AxisFlags_NoTickLabels |
ImAxis3D_ (enum)¶
Axis indices
| Member | Value | |
|---|---|---|
ImAxis3D_X = 0 | 0 | X-axis |
ImAxis3D_Y | 1 | Y-axis |
ImAxis3D_Z | 2 | Z-axis |
ImAxis3D_COUNT, } | 3 |
ImPlane3D_ (enum)¶
Plane indices
| Member | Value | |
|---|---|---|
ImPlane3D_YZ = 0 | 0 | YZ plane (perpendicular to X-axis) |
ImPlane3D_XZ | 1 | XZ plane (perpendicular to Y-axis) |
ImPlane3D_XY | 2 | XY plane (perpendicular to Z-axis) |
ImPlane3D_COUNT, } | 3 |
Scale_ (enum)¶
Axis scale
| Member | Value | |
|---|---|---|
ImPlot3DScale_Linear = 0 | 0 | Default linear scale |
ImPlot3DScale_Log10 | 1 | Base 10 log scale |
ImPlot3DScale_SymLog | 2 | Symmetric base 10 log scale |
Colormap_ (enum)¶
Colormaps
| Member | Value | |
|---|---|---|
ImPlot3DColormap_Deep = 0 | 0 | Same as seaborn “deep” |
ImPlot3DColormap_Dark = 1 | 1 | Same as matplotlib “Set1” |
ImPlot3DColormap_Pastel = 2 | 2 | Same as matplotlib “Pastel1” |
ImPlot3DColormap_Paired = 3 | 3 | Same as matplotlib “Paired” |
ImPlot3DColormap_Viridis = 4 | 4 | Same as matplotlib “viridis” |
ImPlot3DColormap_Plasma = 5 | 5 | Same as matplotlib “plasma” |
ImPlot3DColormap_Hot = 6 | 6 | Same as matplotlib/MATLAB “hot” |
ImPlot3DColormap_Cool = 7 | 7 | Same as matplotlib/MATLAB “cool” |
ImPlot3DColormap_Pink = 8 | 8 | Same as matplotlib/MATLAB “pink” |
ImPlot3DColormap_Jet = 9 | 9 | Same as matplotlib/MATLAB “jet” |
ImPlot3DColormap_Twilight = 10 | 10 | Same as matplotlib “twilight” |
ImPlot3DColormap_RdBu = 11 | 11 | Same as matplotlib “RdBu” |
ImPlot3DColormap_BrBG = 12 | 12 | Same as matplotlib “BrGB” |
ImPlot3DColormap_PiYG = 13 | 13 | Same as matplotlib “PiYG” |
ImPlot3DColormap_Spectral = 14 | 14 | Same as matplotlib “Spectral” |
ImPlot3DColormap_Greys = 15 | 15 | White/black |
Specs API¶
Spec (struct)¶
Plot item styling specification. Provide these to PlotX functions to override styling, specify offsetting or stride, or set optional flags. This struct can be used in the following ways:
By declaring and defining a struct instance:
Inline using ImPlot3DProp,value pairs (order does NOT matter):
ImPlot3D::PlotLine(“MyLine”, xs, ys, zs, 100, { ImPlot3DProp_LineColor, ImVec4(1,0,0,1),
ImPlot3DProp_LineWeight, 2.0,
ImPlot3DProp_Marker, ImPlot3DMarker_Circle,
ImPlot3DProp_Flags, ImPlot3DItemFlags_NoLegend | ImPlot3DLineFlags_Segments
});| Member | |
|---|---|
ImVec4 LineColor = IMPLOT3D_AUTO_COL; | Line color; IMPLOT3D_AUTO_COL will use next Colormap color |
float LineWeight = 1.0f; | Line weight in pixels |
ImVec4 FillColor = IMPLOT3D_AUTO_COL; | Fill color (applies to shaded regions); IMPLOT3D_AUTO_COL will use next Colormap color |
float FillAlpha = IMPLOT3D_AUTO; | Alpha multiplier (applies to FillColor, FillColors, MarkerFillColor, and MarkerFillColors) |
ImPlot3DMarker Marker = ImPlot3DMarker_Auto; | Marker type |
float MarkerSize = IMPLOT3D_AUTO; | Size of markers (radius) in pixels |
ImVec4 MarkerLineColor = IMPLOT3D_AUTO_COL; | Marker outline color; IMPLOT3D_AUTO_COL will use LineColor |
ImVec4 MarkerFillColor = IMPLOT3D_AUTO_COL; | Marker fill color; IMPLOT3D_AUTO_COL will use LineColor |
int Offset = 0; | Data index offset |
int Stride = IMPLOT3D_AUTO; | Data stride in bytes; IMPLOT3D_AUTO will result in sizeof(T) where T is the type passed to PlotX |
ImPlot3DItemFlags Flags = | Optional item flags; can be composed from common ImPlot3DItemFlags and/or specialized ImPlot3DXFlags |
| `` | array of colors (np.uint32) for each line. Must have the same length as the data arrays. If None, use LineColor for all lines. |
| `` | array of colors (np.uint32) for each fill. Must have the same length as the data arrays. If None, use FillColor for all fills. |
| `` | array of colors (np.uint32) for each marker edge. Must have the same length as the data arrays. If None, use MarkerLineColor for all markers. |
| `` | array of colors (np.uint32) for each marker face. Must have the same length as the data arrays. If None, use MarkerFillColor for all markers. |
| `` | array of sizes (np.float32) for each marker. Must have the same length as the data arrays. If None, use MarkerSize for all markers. |
Context¶
ImPlot3D::CreateContext¶
IMPLOT3D_API ImPlot3DContext* CreateContext();Creates a new ImPlot3D context. Call this after ImGui::CreateContext
ImPlot3D::DestroyContext¶
IMPLOT3D_API void DestroyContext(ImPlot3DContext* ctx = nullptr);Destroys an ImPlot3D context. Call this before ImGui::DestroyContext. None = destroy current context
ImPlot3D::GetCurrentContext¶
IMPLOT3D_API ImPlot3DContext* GetCurrentContext();Returns the current ImPlot3D context. None if no context has been set
ImPlot3D::SetCurrentContext¶
IMPLOT3D_API void SetCurrentContext(ImPlot3DContext* ctx);Sets the current ImPlot3D context
Begin/End Plot¶
ImPlot3D::BeginPlot¶
IMPLOT3D_API bool BeginPlot(const char* title_id, const ImVec2& size = ImVec2(-1, 0), ImPlot3DFlags flags = 0);Starts a 3D plotting context. If this function returns True, EndPlot() MUST be called! You are encouraged to use the following convention:
if (ImPlot3D::BeginPlot(...)) {
ImPlot3D::PlotLine(...);
...
ImPlot3D::EndPlot();
}Important notes:
#title_id must be unique to the current ImGui ID scope. If you need to avoid ID collisions or don’t want to display a title in the plot, use double hashes (e.g. “MyPlot##HiddenIdText” or “##NoTitle”).
#size is the frame size of the plot widget, not the plot area.
ImPlot3D::EndPlot¶
IMPLOT3D_API void EndPlot();Only call if BeginPlot() returns True!
Setup¶
ImPlot3D::SetupAxis¶
IMPLOT3D_API void SetupAxis(ImAxis3D axis, const char* label = nullptr, ImPlot3DAxisFlags flags = 0);Enables an axis or sets the label and/or flags for an existing axis. Leave #label = None for no label
The following API allows you to setup and customize various aspects of the current plot. The functions should be called immediately after BeginPlot() and before any other API calls. Typical usage is as follows:
if (ImPlot3D::BeginPlot(...)) { 1) Begin a new plot
ImPlot3D::SetupAxis(ImAxis3D_X, "My X-Axis"); 2) Make Setup calls
ImPlot3D::SetupAxis(ImAxis3D_Y, "My Y-Axis");
ImPlot3D::SetupLegend(ImPlotLocation_North);
...
ImPlot3D::SetupFinish(); 3) [Optional] Explicitly finish setup
ImPlot3D::PlotLine(...); 4) Plot items
...
ImPlot3D::EndPlot(); 5) End the plot
}Important notes:
Always call Setup code at the top of your BeginPlot conditional statement.
Setup is locked once you start plotting or explicitly call SetupFinish.
Do NOT call Setup code after you begin plotting or after you make any non-Setup API calls (e.g. utils like PlotToPixels also lock Setup).Calling SetupFinish is OPTIONAL, but probably good practice. If you do not call it yourself, then the first subsequent plotting or utility function will call it for you.
ImPlot3D::SetupAxisLimits¶
IMPLOT3D_API void SetupAxisLimits(ImAxis3D axis, double v_min, double v_max, ImPlot3DCond cond = ImPlot3DCond_Once);Sets an axis range limits. If ImPlot3DCond_Always is used, the axis limits will be locked.
Note: To invert an axis, use ImPlot3DAxisFlags_Invert with SetupAxis instead of swapping min/max
ImPlot3D::SetupAxisScale¶
IMPLOT3D_API void SetupAxisScale(ImAxis3D axis, ImPlot3DScale scale);Sets an axis’ scale using built-in options
ImPlot3D::SetupAxisLimitsConstraints¶
IMPLOT3D_API void SetupAxisLimitsConstraints(ImAxis3D axis, double v_min, double v_max);Sets an axis’ limits constraints. The axis will be constrained to never go below #v_min or above #v_max
ImPlot3D::SetupAxisZoomConstraints¶
IMPLOT3D_API void SetupAxisZoomConstraints(ImAxis3D axis, double zoom_min, double zoom_max);Sets an axis’ zoom constraints. The zoom (axis range size: range.max - range.min) will be constrained between #zoom_min and #zoom_max
ImPlot3D::SetupAxes¶
IMPLOT3D_API void SetupAxes(const char* x_label, const char* y_label, const char* z_label, ImPlot3DAxisFlags x_flags = 0, ImPlot3DAxisFlags y_flags = 0, ImPlot3DAxisFlags z_flags = 0);Sets the label and/or flags for primary X/Y/Z axes (shorthand for three calls to SetupAxis)
ImPlot3D::SetupAxesLimits¶
IMPLOT3D_API void SetupAxesLimits(double x_min, double x_max, double y_min, double y_max, double z_min, double z_max, ImPlot3DCond cond = ImPlot3DCond_Once);Sets the X/Y/Z axes range limits. If ImPlot3DCond_Always is used, the axes limits will be locked (shorthand for three calls to SetupAxisLimits)
ImPlot3D::SetupBoxRotation¶
IMPLOT3D_API void SetupBoxRotation(double elevation, double azimuth, bool animate = false, ImPlot3DCond cond = ImPlot3DCond_Once);IMPLOT3D_API void SetupBoxRotation(ImPlot3DQuat rotation, bool animate = false, ImPlot3DCond cond = ImPlot3DCond_Once);Sets the plot box rotation given the elevation and azimuth angles in degrees. If ImPlot3DCond_Always is used, the rotation will be locked
ImPlot3D::SetupBoxInitialRotation¶
IMPLOT3D_API void SetupBoxInitialRotation(double elevation, double azimuth);IMPLOT3D_API void SetupBoxInitialRotation(ImPlot3DQuat rotation);Sets the plot box initial rotation given the elevation and azimuth angles in degrees. The initial rotation is the rotation the plot goes back to when a left mouse button double click happens
ImPlot3D::SetupBoxScale¶
IMPLOT3D_API void SetupBoxScale(double x, double y, double z);Sets the plot box X/Y/Z scale. A scale of 1.0 is the default. Values greater than 1.0 enlarge the plot, while values between 0.0 and 1.0 shrink it
ImPlot3D::SetupLegend¶
IMPLOT3D_API void SetupLegend(ImPlot3DLocation location, ImPlot3DLegendFlags flags = 0);Sets up the plot legend location and flags
Plot Items¶
ImPlot3D::PlotScatter¶
IMPLOT3D_TMP void PlotScatter(const char* label_id, const T* xs, const T* ys, const T* zs, int count, const ImPlot3DSpec& spec = ImPlot3DSpec());Plots a scatter plot in 3D. Points are rendered as markers at the specified coordinates
Note: all array arguments must share the same dtype (e.g. xs = xs.astype(ys.dtype)).
The plotting API is provided below. Call these functions between
BeginPlot/EndPlot and after any Setup API calls.
The templated functions are explicitly instantiated in implot3d_items.cpp.
They are not intended to be used generically with custom types. You will get
a linker error if you try! All functions support the following scalar types:
float, double, ImS8, ImU8, ImS16, ImU16, ImS32, ImU32, ImS64, ImU64
If you need to plot custom or non-homogenous data you have a few options:
If your data is a simple struct/class (e.g. Vector3f), you can use striding.
This is the most performant option if applicable.
struct Vector3f { float X, Y, Z; };
...
Vector3f data[42];
ImPlot3D::PlotLine("line", &data[0].X, &data[0].Y, &data[0].Z, 42, {ImPlot3DProp_Stride, sizeof(Vector2f)});If your data is in separate arrays or requires computation, you can copy/transform it into temporary float or double arrays before plotting.
NB: All types are converted to double before plotting. You may lose information if you try plotting extremely large 64-bit integral types. Proceed with caution!
ImPlot3D::PlotLine¶
IMPLOT3D_TMP void PlotLine(const char* label_id, const T* xs, const T* ys, const T* zs, int count, const ImPlot3DSpec& spec = ImPlot3DSpec());Plots a line in 3D. Consecutive points are connected with line segments
Note: all array arguments must share the same dtype (e.g. xs = xs.astype(ys.dtype)).
ImPlot3D::PlotTriangle¶
IMPLOT3D_TMP void PlotTriangle(const char* label_id, const T* xs, const T* ys, const T* zs, int count, const ImPlot3DSpec& spec = ImPlot3DSpec());Plots triangles in 3D. Every 3 consecutive points define a triangle
Note: all array arguments must share the same dtype (e.g. xs = xs.astype(ys.dtype)).
ImPlot3D::PlotQuad¶
IMPLOT3D_TMP void PlotQuad(const char* label_id, const T* xs, const T* ys, const T* zs, int count, const ImPlot3DSpec& spec = ImPlot3DSpec());Plots quads in 3D. Every 4 consecutive points define a quadrilateral
Note: all array arguments must share the same dtype (e.g. xs = xs.astype(ys.dtype)).
ImPlot3D::PlotSurface¶
IMPLOT3D_TMP void PlotSurface( const char* label_id, const T* xs, int xs_count, const T* ys, int ys_count, const T* zs, int zs_count, int x_count, int y_count, double scale_min = 0.0, double scale_max = 0.0, const ImPlot3DSpec& spec = ImPlot3DSpec() );Plot the surface defined by a grid of vertices. The grid is defined by the x and y arrays,
and the z array contains the height of each vertex.
A total of x_count * y_count vertices are expected for each array.
Leave #scale_min and #scale_max both at 0 for automatic color scaling, or set them to a predefined range.
Note: all array arguments must share the same dtype (e.g. xs = xs.astype(ys.dtype)).
A version of PlotSurface whose API is easier to port to Python (params xs_count, ys_count and zs_count are removed in the Python API, but are used in the bindings code generation)
Mesh (struct)¶
| Member | |
|---|---|
std::vector<ImPlot3DPoint> Points; | |
std::vector<UInt> Idx; | Triangles are defined by the index buffer (every 3 indices form a triangle) |
ImPlot3D::PlotMesh¶
IMPLOT3D_API void PlotMesh(const char* label_id, const Mesh& mesh, const ImPlot3DSpec& spec = ImPlot3DSpec());ImPlot3D::PlotImage¶
IMPLOT3D_API void PlotImage(const char* label_id, ImTextureRef tex_ref, const ImPlot3DPoint& center, const ImPlot3DPoint& axis_u, const ImPlot3DPoint& axis_v, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImPlot3DSpec& spec = ImPlot3DSpec());IMPLOT3D_API void PlotImage(const char* label_id, ImTextureRef tex_ref, const ImPlot3DPoint& p0, const ImPlot3DPoint& p1, const ImPlot3DPoint& p2, const ImPlot3DPoint& p3, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 0), const ImVec2& uv2 = ImVec2(1, 1), const ImVec2& uv3 = ImVec2(0, 1), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImPlot3DSpec& spec = ImPlot3DSpec());Plots a rectangular image in 3D defined by its center and two direction vectors (axes).
#center is the center of the rectangle in plot coordinates.
#axis_u and #axis_v define the local axes and half-extents of the rectangle in 3D space.
The rectangle is formed by moving from the center along ±axis_u and ±axis_v.
#uv0 and #uv1 define the texture mapping.
#tint_col can be used to tint the image.
[/ADAPT_IMGUI_BUNDLE]
ImPlot3D::PlotText¶
IMPLOT3D_API void PlotText(const char* text, double x, double y, double z, double angle = 0.0, const ImVec2& pix_offset = ImVec2(0, 0));Plots a centered text label at point x,y,z with optional rotation angle (in radians) and pixel offset
ImPlot3D::PlotDummy¶
IMPLOT3D_API void PlotDummy(const char* label_id, const ImPlot3DSpec& spec = ImPlot3DSpec());Plots a dummy item (can be used to modify legend entry appearance when called after plotting an item, or add a dummy legend entry)
Plot Utils¶
ImPlot3D::PlotToPixels¶
IMPLOT3D_API ImVec2 PlotToPixels(const ImPlot3DPoint& point);IMPLOT3D_API ImVec2 PlotToPixels(double x, double y, double z);Convert a position in the current plot’s coordinate system to pixels
ImPlot3D::PixelsToPlotRay¶
IMPLOT3D_API ImPlot3DRay PixelsToPlotRay(const ImVec2& pix);IMPLOT3D_API ImPlot3DRay PixelsToPlotRay(double x, double y);Convert a pixel coordinate to a ray in the current plot’s coordinate system. Useful for 3D picking and intersection tests
ImPlot3D::PixelsToPlotPlane¶
IMPLOT3D_API ImPlot3DPoint PixelsToPlotPlane(const ImVec2& pix, ImPlane3D plane, bool mask = true);IMPLOT3D_API ImPlot3DPoint PixelsToPlotPlane(double x, double y, ImPlane3D plane, bool mask = true);Convert a pixel coordinate to a point on one of the plot box’s axis-aligned planes (XY, XZ, or YZ).
By default, the result is masked to the axis ranges. Set #mask=False to project to the infinite plane.
Returns ImPlot3DPoint(NAN, NAN, NAN) if the ray does not intersect the plane
ImPlot3D::GetPlotRectPos¶
IMPLOT3D_API ImVec2 GetPlotRectPos();Get the current plot rect position (top-left) in absolute screen coordinates
ImPlot3D::GetPlotRectSize¶
IMPLOT3D_API ImVec2 GetPlotRectSize();Get the current plot rect size in pixels
Miscellaneous¶
ImPlot3D::GetPlotDrawList¶
IMPLOT3D_API ImDrawList* GetPlotDrawList();Returns the ImDrawList used for rendering plot items. Use this to add custom rendering inside plots
Styles API¶
Get current style¶
ImPlot3D::GetStyle¶
IMPLOT3D_API ImPlot3DStyle& GetStyle();ImPlot3D::SetStyle¶
IMPLOT3D_API void SetStyle(const ImPlot3DStyle& style);Set color styles¶
ImPlot3D::StyleColorsAuto¶
IMPLOT3D_API void StyleColorsAuto(ImPlot3DStyle* dst = nullptr);Set colors with ImGui style
ImPlot3D::StyleColorsDark¶
IMPLOT3D_API void StyleColorsDark(ImPlot3DStyle* dst = nullptr);Set colors with dark style
ImPlot3D::StyleColorsLight¶
IMPLOT3D_API void StyleColorsLight(ImPlot3DStyle* dst = nullptr);Set colors with light style
ImPlot3D::StyleColorsClassic¶
IMPLOT3D_API void StyleColorsClassic(ImPlot3DStyle* dst = nullptr);Set colors with classic style
ImPlot3D::PushStyleColor¶
IMPLOT3D_API void PushStyleColor(ImPlot3DCol idx, ImU32 col);IMPLOT3D_API void PushStyleColor(ImPlot3DCol idx, const ImVec4& col);Temporarily modify a style color. Don’t forget to call PopStyleColor!
ImPlot3D::PopStyleColor¶
IMPLOT3D_API void PopStyleColor(int count = 1);Undo temporary style color modification(s). Undo multiple pushes at once by increasing count
ImPlot3D::PushStyleVar¶
IMPLOT3D_API void PushStyleVar(ImPlot3DStyleVar idx, int val);IMPLOT3D_API void PushStyleVar(ImPlot3DStyleVar idx, float val);IMPLOT3D_API void PushStyleVar(ImPlot3DStyleVar idx, const ImVec2& val);Temporarily modify a style variable of int type. Don’t forget to call PopStyleVar!
ImPlot3D::PopStyleVar¶
IMPLOT3D_API void PopStyleVar(int count = 1);Undo temporary style variable modification(s). Undo multiple pushes at once by increasing count
Get color¶
ImPlot3D::GetStyleColorVec4¶
IMPLOT3D_API ImVec4 GetStyleColorVec4(ImPlot3DCol idx);ImPlot3D::GetStyleColorU32¶
IMPLOT3D_API ImU32 GetStyleColorU32(ImPlot3DCol idx);ImPlot3D::NextMarker¶
IMPLOT3D_API ImPlot3DMarker NextMarker();Returns the next marker and advances the marker for the current plot. You need to call this between Begin/EndPlot!
Colormaps¶
ImPlot3D::AddColormap¶
IMPLOT3D_API ImPlot3DColormap AddColormap(const char* name, const ImVec4* cols, int size, bool qual = true);IMPLOT3D_API ImPlot3DColormap AddColormap(const char* name, const ImU32* cols, int size, bool qual = true);Item styling is based on colormaps when the relevant ImPlot3DCol_XXX is set to
IMPLOT3D_AUTO_COL (default). Several built-in colormaps are available. You can
add and then push/pop your own colormaps as well. To permanently set a colormap,
modify the Colormap index member of your ImPlot3DStyle.
Colormap data will be ignored and a custom color will be used if you have done one of the following:
1) Modified an item style color in your ImPlot3DStyle to anything other than IMPLOT3D_AUTO_COL.
Add a new colormap. The color data will be copied. The colormap can be used by pushing either the returned index or the
string name with PushColormap. The colormap name must be unique and the size must be greater than 1. You will receive
an assert otherwise! By default colormaps are considered to be qualitative (i.e. discrete). If you want to create a
continuous colormap, set #qual=False. This will treat the colors you provide as keys, and ImPlot3D will build a linearly
interpolated lookup table. The memory footprint of this table will be exactly ((size-1)*255+1)*4 bytes.
ImPlot3D::GetColormapCount¶
IMPLOT3D_API int GetColormapCount();Returns the number of available colormaps (i.e. the built-in + user-added count)
ImPlot3D::GetColormapName¶
IMPLOT3D_API const char* GetColormapName(ImPlot3DColormap cmap);Returns a null terminated string name for a colormap given an index. Returns None if index is invalid
ImPlot3D::GetColormapIndex¶
IMPLOT3D_API ImPlot3DColormap GetColormapIndex(const char* name);Returns an index number for a colormap given a valid string name. Returns -1 if name is invalid
ImPlot3D::PushColormap¶
IMPLOT3D_API void PushColormap(ImPlot3DColormap cmap);IMPLOT3D_API void PushColormap(const char* name);Temporarily switch to one of the built-in (i.e. ImPlot3DColormap_XXX) or user-added colormaps (i.e. a return value of AddColormap). Don’t forget to call PopColormap!
ImPlot3D::PopColormap¶
IMPLOT3D_API void PopColormap(int count = 1);Undo temporary colormap modification(s). Undo multiple pushes at once by increasing count
ImPlot3D::NextColormapColor¶
IMPLOT3D_API ImVec4 NextColormapColor();Returns the next color from the current colormap and advances the colormap for the current plot
Can also be used with no return value to skip colors if desired. You need to call it between Begin/EndPlot!
ImPlot3D::GetColormapSize¶
IMPLOT3D_API int GetColormapSize(ImPlot3DColormap cmap = IMPLOT3D_AUTO);Returns the size of a colormap
ImPlot3D::GetColormapColor¶
IMPLOT3D_API ImVec4 GetColormapColor(int idx, ImPlot3DColormap cmap = IMPLOT3D_AUTO);Returns a color from a colormap given an index >= 0 (modulo will be performed)
ImPlot3D::SampleColormap¶
IMPLOT3D_API ImVec4 SampleColormap(float t, ImPlot3DColormap cmap = IMPLOT3D_AUTO);Sample a color from the current colormap given t between 0 and 1
Demo¶
ImPlot3D::ShowDemoWindow¶
IMPLOT3D_API void ShowDemoWindow(bool* p_open = nullptr);Shows the ImPlot3D demo window
Add implot3d_demo.cpp to your sources to use methods in this section
ImPlot3D::ShowAllDemos¶
IMPLOT3D_API void ShowAllDemos();Shows all ImPlot3D demos, without enclosing window
ImPlot3D::ShowDemoWindow_MaybeDocked¶
IMPLOT3D_API void ShowDemoWindow_MaybeDocked(bool create_window, bool* p_open = NULL, ImGuiWindowFlags initial_extra_flags = 0, ImVec2 window_pos = ImVec2(0, 0), ImVec2 window_size = ImVec2(0, 0));ImPlot3D::ShowStyleEditor¶
IMPLOT3D_API void ShowStyleEditor(ImPlot3DStyle* ref = nullptr);Shows ImPlot3D style editor block (not a window)
ImPlot3D::ShowStyleSelector¶
IMPLOT3D_API bool ShowStyleSelector(const char* label);Shows ImPlot3D style selector and returns True if selection is changed (not a window)
ImPlot3D::ShowColormapSelector¶
IMPLOT3D_API bool ShowColormapSelector(const char* label);Shows ImPlot3D colormap selector and returns True if selection is changed (not a window)
ImPlot3D::ShowMetricsWindow¶
IMPLOT3D_API void ShowMetricsWindow(bool* p_popen = nullptr);Shows ImPlot3D metrics/debug information window.
ImPlot3D::ShowAboutWindow¶
IMPLOT3D_API void ShowAboutWindow(bool* p_open = nullptr);Shows ImPlot3D about window.
ImPlot3DPoint¶
Point (struct)¶
ImPlot3DPoint: 3D vector to store points in 3D space
| Member | |
|---|---|
double x, | Coordinates |
y, | Coordinates |
z; | Coordinates |
Point::ImPlot3DPoint¶
constexpr ImPlot3DPoint() : x(0.0), y(0.0), z(0.0);constexpr ImPlot3DPoint(double _x, double _y, double _z) : x(_x), y(_y), z(_z);Point::Dot¶
IMPLOT3D_API double Dot(const ImPlot3DPoint& rhs) const;Dot product
Point::Cross¶
IMPLOT3D_API ImPlot3DPoint Cross(const ImPlot3DPoint& rhs) const;Cross product
Point::Length¶
IMPLOT3D_API double Length() const;Get vector length
Point::LengthSquared¶
IMPLOT3D_API double LengthSquared() const;Get vector squared length
Point::Normalize¶
IMPLOT3D_API void Normalize();Normalize to unit length
Point::Normalized¶
IMPLOT3D_API ImPlot3DPoint Normalized() const;Return vector normalized to unit length
Point::IsNaN¶
IMPLOT3D_API bool IsNaN() const;Check if the point is NaN
ImPlot3DRay¶
Ray (struct)¶
ImPlot3DRay: Represents a ray in 3D space with an origin and direction
| Member | |
|---|---|
ImPlot3DPoint Origin; | Ray origin point |
ImPlot3DPoint Direction; | Ray direction (not necessarily normalized) |
ImPlot3DPlane¶
Plane (struct)¶
ImPlot3DPlane: Represents a plane in 3D space defined by a point and normal vector
| Member | |
|---|---|
ImPlot3DPoint Point; | A point on the plane |
ImPlot3DPoint Normal; | Plane normal vector |
ImPlot3DBox¶
Box (struct)¶
ImPlot3DBox: Axis-aligned bounding box in 3D space
| Member | |
|---|---|
ImPlot3DPoint Min; | Minimum corner of the box |
ImPlot3DPoint Max; | Maximum corner of the box |
Box::ImPlot3DBox¶
constexpr ImPlot3DBox() : Min(ImPlot3DPoint()), Max(ImPlot3DPoint());constexpr ImPlot3DBox(const ImPlot3DPoint& min, const ImPlot3DPoint& max) : Min(min), Max(max);Default constructor
Box::Expand¶
IMPLOT3D_API void Expand(const ImPlot3DPoint& point);Method to expand the box to include a point
Box::Contains¶
IMPLOT3D_API bool Contains(const ImPlot3DPoint& point) const;Method to check if a point is inside the box
Box::ClipLineSegment¶
IMPLOT3D_API bool ClipLineSegment(const ImPlot3DPoint& p0, const ImPlot3DPoint& p1, ImPlot3DPoint& p0_clipped, ImPlot3DPoint& p1_clipped) const;Method to clip a line segment against the box
ImPlot3DRange¶
Range (struct)¶
ImPlot3DRange: Represents a 1D range with min and max values
| Member | |
|---|---|
double Min; | Minimum value |
double Max; | Maximum value |
Range::ImPlot3DRange¶
constexpr ImPlot3DRange() : Min(0.0), Max(0.0);constexpr ImPlot3DRange(double min, double max) : Min(min), Max(max);Range::Expand¶
IMPLOT3D_API void Expand(double value);Expand range to include value
Range::Contains¶
IMPLOT3D_API bool Contains(double value) const;Check if value is within range
Range::Size¶
double Size() const;(private API)
Get range size
ImPlot3DQuat¶
Quat (struct)¶
ImPlot3DQuat: Quaternion for representing 3D rotations
| Member | |
|---|---|
double x, | Quaternion components |
y, | Quaternion components |
z, | Quaternion components |
w; | Quaternion components |
Quat::ImPlot3DQuat¶
constexpr ImPlot3DQuat() : x(0.0), y(0.0), z(0.0), w(1.0);constexpr ImPlot3DQuat(double _x, double _y, double _z, double _w) : x(_x), y(_y), z(_z), w(_w);IMPLOT3D_API ImPlot3DQuat(double _angle, const ImPlot3DPoint& _axis);Construct quaternion from angle-axis representation (angle in radians)
Quat::FromTwoVectors¶
IMPLOT3D_API static ImPlot3DQuat FromTwoVectors(const ImPlot3DPoint& v0, const ImPlot3DPoint& v1);Create quaternion that rotates from v0 to v1
Quat::FromElAz¶
IMPLOT3D_API static ImPlot3DQuat FromElAz(double elevation, double azimuth);Create quaternion from elevation and azimuth angles (in radians)
Quat::Length¶
IMPLOT3D_API double Length() const;Get quaternion length
Quat::Normalized¶
IMPLOT3D_API ImPlot3DQuat Normalized() const;Get normalized quaternion
Quat::Conjugate¶
IMPLOT3D_API ImPlot3DQuat Conjugate() const;Conjugate of the quaternion
Quat::Inverse¶
IMPLOT3D_API ImPlot3DQuat Inverse() const;Inverse of the quaternion
Quat::Normalize¶
IMPLOT3D_API ImPlot3DQuat& Normalize();Normalize the quaternion in place
Quat::Slerp¶
IMPLOT3D_API static ImPlot3DQuat Slerp(const ImPlot3DQuat& q1, const ImPlot3DQuat& q2, double t);Spherical linear interpolation between two quaternions (t in [0,1])
Quat::Dot¶
IMPLOT3D_API double Dot(const ImPlot3DQuat& rhs) const;Get quaternion dot product
ImPlot3DStyle¶
Style (struct)¶
(has support for copy.copy)
| Member | |
|---|---|
float LineWeight; | Line weight in pixels |
int Marker; | Default marker type (ImPlot3DMarker_None) |
float MarkerSize; | Marker size in pixels (roughly the marker’s “radius”) |
float FillAlpha; | Alpha modifier applied to plot fills |
ImVec2 PlotDefaultSize; | Default size used when ImVec2(0,0) is passed to BeginPlot |
ImVec2 PlotMinSize; | Minimum size plot frame can be when shrunk |
ImVec2 PlotPadding; | Padding between widget frame and plot area |
ImVec2 LabelPadding; | Padding between axes labels, tick labels, and plot edge |
float ViewScaleFactor; | Scale factor for 3D view |
ImVec2 LegendPadding; | Legend padding from plot edges |
ImVec2 LegendInnerPadding; | Legend inner padding from legend edges |
ImVec2 LegendSpacing; | Spacing between legend entries |
ImPlot3DColormap Colormap; | The current colormap (ImPlot3DColormap_ enum or index from AddColormap) |
Style::GetColor¶
inline ImVec4 GetColor(ImPlot3DCol idx) const;(private API)
Style::SetColor¶
inline void SetColor(ImPlot3DCol idx, const ImVec4& col);(private API)
Style::ImPlot3DStyle¶
IMPLOT3D_API ImPlot3DStyle();ImPlot3DStyle(const ImPlot3DStyle& other) = default;Constructor