Files
ResInsight/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotTools.h
T
Magne Sjaastad 044454b9b1 Auto-assign Y-axis for ensemble curve sets based on unit/vector match
Extends the existing single-curve auto axis assignment (unit and summary vector matching, then alternating left/right) to also cover RimEnsembleCurveSet. Previously ensemble curve sets were always placed on the default left axis, so e.g. FOPT and FOPR ensembles ended up on the same axis despite differing units.

- Add RimEnsembleCurveSet::unitNameY(), looked up from the first available summary case reader in the ensemble.
- Move X and Y axis assignment from RimSummaryPlot to new RimSummaryPlotTools. Y-axis assignment takes a RiaSummaryAddressModifier::CurveAddressProvider, and compares against both curves and curve sets in the plot.
- RimEnsembleCurveSetCollection::addCurveSet gains an autoAssignPlotAxis flag (default true, matching addCurveAndUpdate for single curves).

Also fixes a bug in the summary plot editor where ensemble curve sets manually assigned to different Y-axes collapsed onto the same axis when clicking OK. The PdmPtrField axis reference does not resolve across the cloned preview and target plots. Add RimEnsembleCurveSet::findOrAssignLeftOrRightAxisY() to capture and re-apply the axis explicitly.

Add RimSummaryPlot-Test.cpp with unit tests for axis auto-assignment of curves and ensemble curve sets.

Fixes #14728
2026-09-16 06:28:50 -04:00

42 lines
1.7 KiB
C++

/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2026- Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RiaPlotDefines.h"
#include "Summary/RiaSummaryAddressModifier.h"
#include <vector>
class RimPlotAxisPropertiesInterface;
class RimSummaryCurve;
class RimSummaryPlot;
namespace RimSummaryPlotTools
{
// Assign a Y-axis based on matching unit or summary vector of the other curves and curve sets in the plot. Creates a new
// axis if required.
void assignYPlotAxis( RimSummaryPlot* plot,
const std::vector<RimPlotAxisPropertiesInterface*>& axisProperties,
const RiaSummaryAddressModifier::CurveAddressProvider& curveProvider );
// Assign an X-axis for curves using a summary vector as X-axis, based on matching unit or summary vector of the other curves in
// the plot. Creates a new axis if required.
void assignXPlotAxis( RimSummaryPlot* plot, const std::vector<RimPlotAxisPropertiesInterface*>& axisProperties, RimSummaryCurve* curve );
} // namespace RimSummaryPlotTools