epezent / epezent/implot

Y2 axis zoom is locked after setting limits once

Open
#595 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

If you want to control the limits of the Y2 axis yourself, and call "SetupAxisLimits(ImAxis_Y2...)" only on those frames when you actually want to change those limits, you are unable to zoom in or out on that axis.

This behaviour is different from that on the Y1 axis which zooms as expected.

This is some sample code. Once the "Reset Zoom" button is pressed once, the zoom on the Y2 axis is permanently locked.

```
void Demo_AxisLockIssue() {
static float limits_x[2] = { 0, 1.0 };
static float limits_y1[2] = { 0, 10.0 };
static float limits_y2[2] = { 10.0, 20.0 };

float data_x[5] = { 0.0f, 0.25f, 0.5f, 0.75f, 1.0f };
float data_y1[5] = { 0.0f, 2.5f, 5.0f, 7.5f, 10.0f };
float data_y2[5] = { 20.0f, 17.5f, 15.0f, 12.5f, 10.0f };

bool reset_zoom = false;
if (ImGui::Button("Reset Zoom"))
reset_zoom = true;

if (ImPlot::BeginPlot("##AxisLockIssue"))
{
ImPlot::SetupAxes("X", "Y1");
ImPlot::SetupAxis(ImAxis_Y2, "Y2", ImPlotAxisFlags_AuxDefault);

if (reset_zoom)
{
ImPlot::SetupAxisLimits(ImAxis_X1, limits_x[0], limits_x[1], ImGuiCond_Always);
ImPlot::SetupAxisLimits(ImAxis_Y1, limits_y1[0], limits_y1[1], ImGuiCond_Always);
ImPlot::SetupAxisLimits(ImAxis_Y2, limits_y2[0], limits_y2[1], ImGuiCond_Always);
}

ImPlot::PlotLine("Y1", data_x, data_y1, 5);

ImPlot::SetAxes(ImAxis_X1, ImAxis_Y2);
ImPlot::PlotLine("Y2", data_x, data_y2, 5);

ImPlot::EndPlot();
}
}
```

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.