Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/ert/gui/tools/plot/plot_ensemble_selection_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ def __init__(self, ensembles: list[EnsembleObject]) -> None:
def get_selected_ensembles(self) -> list[EnsembleObject]:
return self.__dndlist.get_checked_ensembles()

def get_selected_ensembles_indexes(self) -> list[int]:
return self.__dndlist.get_checked_indexes()


class EnsembleSelectListWidget(QListWidget):
ensembleSelectionListChanged = Signal()
Expand Down Expand Up @@ -90,6 +93,16 @@ def _iter() -> Iterator[EnsembleObject]:

return list(_iter())

def get_checked_indexes(self) -> list[int]:
def _iter() -> Iterator[int]:
for index in range(self._ensemble_count):
item = self.item(index)
assert item is not None
if item.data(Qt.ItemDataRole.CheckStateRole):
yield index

return list(_iter())

def mouseMoveEvent(self, e: QMouseEvent | None) -> None:
super().mouseMoveEvent(e)
if e is not None and self.itemAt(e.pos()):
Expand Down
7 changes: 6 additions & 1 deletion src/ert/gui/tools/plot/plot_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,9 @@ def updatePlot(self, layer: int | None = None) -> None:
selected_ensembles = (
self._ensemble_selection_widget.get_selected_ensembles()
)
selected_ensembles_indexes = (
self._ensemble_selection_widget.get_selected_ensembles_indexes()
)
ensemble_to_data_map: dict[EnsembleObject, pd.DataFrame] = {}
for ensemble in selected_ensembles:
try:
Expand Down Expand Up @@ -265,7 +268,9 @@ def updatePlot(self, layer: int | None = None) -> None:
plot_widget.showLayerWidget.emit(False)

plot_config = PlotConfig.createCopy(self._plot_customizer.getPlotConfig())
plot_context = PlotContext(plot_config, selected_ensembles, key, layer)
plot_context = PlotContext(
plot_config, selected_ensembles, selected_ensembles_indexes, key, layer
)

# Check if key is a history key.
# If it is it already has the data it needs
Expand Down
5 changes: 5 additions & 0 deletions src/ert/gui/tools/plot/plottery/plot_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ def __init__(

self._std_dev_factor = 1 # sigma 1 is default std dev

def setCurrentColor(self, index: int) -> None:
self._current_color = self._line_color_cycle_colors[
index % len(self._line_color_cycle_colors)
]

def currentColor(self) -> tuple[str, float]:
if self._current_color is None:
return self.nextColor()
Expand Down
5 changes: 5 additions & 0 deletions src/ert/gui/tools/plot/plottery/plot_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ def __init__(
self,
plot_config: PlotConfig,
ensembles: list[EnsembleObject],
ensembles_index: list[int],
key: str,
layer: int | None = None,
) -> None:
super().__init__()
self._key = key
self._ensembles = ensembles
self._ensembles_index = ensembles_index
self._plot_config = plot_config
self.history_data: DataFrame | None = None
self._layer: int | None = layer
Expand All @@ -50,6 +52,9 @@ def plotConfig(self) -> PlotConfig:
def ensembles(self) -> list[EnsembleObject]:
return self._ensembles

def ensembles_index(self) -> list[int]:
return self._ensembles_index

def key(self) -> str:
return self._key

Expand Down
6 changes: 4 additions & 2 deletions src/ert/gui/tools/plot/plottery/plots/ensemble.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,16 @@ def plot(
plot_context.x_axis = plot_context.DATE_AXIS
draw_style = "steps-pre" if is_rate(plot_context.key()) else None

for ensemble, data in ensemble_to_data_map.items():
for (ensemble, data), index in zip(
ensemble_to_data_map.items(), plot_context.ensembles_index(), strict=False
):
data = data.T

if not data.empty:
if data.index.inferred_type != "datetime64":
plot_context.deactivateDateSupport()
plot_context.x_axis = plot_context.INDEX_AXIS

config.setCurrentColor(index)
self._plotLines(
axes,
config,
Expand Down
1 change: 1 addition & 0 deletions tests/ert/unit_tests/gui/plottery/test_ensemble_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def plot_context(request):
"ensemble_1", "id", False, "experiment_1", started_at="2012-12-10T00:00:00"
)
]
context.ensembles_index.return_value = [1]
context.key.return_value = request.param
context.history_data = None
context.plotConfig.return_value = PlotConfig(title="Ensemble Plot")
Expand Down