diff --git a/optuna_dashboard/_cached_extra_study_property.py b/optuna_dashboard/_cached_extra_study_property.py index c8af8ec5..304c2a16 100644 --- a/optuna_dashboard/_cached_extra_study_property.py +++ b/optuna_dashboard/_cached_extra_study_property.py @@ -88,7 +88,10 @@ class _CachedExtraStudyProperty: def _update_user_attrs(self, trial: FrozenTrial) -> None: # TODO(c-bata): Support numpy-specific number types. - current_user_attrs = {k: isinstance(v, (int, float)) for k, v in trial.user_attrs.items()} + current_user_attrs = { + k: not isinstance(v, bool) and isinstance(v, (int, float)) + for k, v in trial.user_attrs.items() + } for attr_name, current_is_sortable in current_user_attrs.items(): is_sortable = self._union_user_attrs.get(attr_name) if is_sortable is None: diff --git a/optuna_dashboard/ts/components/GraphSlice.tsx b/optuna_dashboard/ts/components/GraphSlice.tsx index 0d2d2f90..893647e4 100644 --- a/optuna_dashboard/ts/components/GraphSlice.tsx +++ b/optuna_dashboard/ts/components/GraphSlice.tsx @@ -15,8 +15,7 @@ import { import { plotlyDarkTemplate } from "./PlotlyDarkMode" import { Target, - useFilteredTrials, - useObjectiveTargets, + useFilteredTrials, useObjectiveAndUserAttrTargets, useParamTargets, } from "../trialFilter" import { useMergedUnionSearchSpace } from "../searchSpace" @@ -36,7 +35,7 @@ export const GraphSlice: FC<{ const theme = useTheme() const [objectiveTargets, selectedObjective, setObjectiveTarget] = - useObjectiveTargets(study) + useObjectiveAndUserAttrTargets(study) const searchSpace = useMergedUnionSearchSpace(study?.union_search_space) const [paramTargets, selectedParamTarget, setParamTarget] = useParamTargets(searchSpace) @@ -96,7 +95,7 @@ export const GraphSlice: FC<{ > Slice - {study !== null && study.directions.length !== 1 && ( + {objectiveTargets.length !== 1 && ( Objective: