def force_plot_from_ts(
        self,
        foreground_series: Optional[TimeSeries] = None,
        foreground_past_covariates: Optional[TimeSeries] = None,
        foreground_future_covariates: Optional[TimeSeries] = None,
        horizon: Optional[int] = 1,
        target_component: Optional[str] = None,
        **kwargs,
    ):
        """
        Display a shap force_plot for one target and one horizon, for a given foreground_series.
        It displays shap values of each lag/covariate with an additive force layout.

        Once the plot is displayed, select "original sample ordering"
        to observe the time series chronologically.

        Parameters
        ----------
        foreground_series
            Optionally, the target series to explain. Can be multivariate. If `None`, will use the `background_series`.
        foreground_past_covariates
            Optionally, a past covariate series if required by the forecasting model. If `None`, will use the
            `background_past_covariates`.
        foreground_future_covariates
            Optionally, a future covariate series if required by the forecasting model. If `None`, will use the
            `background_future_covariates`.
        horizon
            Optionally, an integer for the point/step in the future to explain, starting from the first prediction
            step at 1. `horizons` must not be larger than `output_chunk_length`.
        target_component
            Optionally, the target component to plot. If the target series is multivariate, the target component
            must be specified.
        **kwargs
            Optionally, additional keyword arguments passed to `shap.force_plot()`.
        """

        raise_if(
            target_component is None and len(self.target_components) > 1,
            "The component parameter is required when the model has more than one component.",
        )

        if target_component is None:
            target_component = self.target_components[0]

        (
            foreground_series,
            foreground_past_covariates,
            foreground_future_covariates,
            _,
            _,
            _,
            _,
        ) = self._process_foreground(
            foreground_series,
            foreground_past_covariates,
            foreground_future_covariates,
        )
        horizons, target_components = self._process_horizons_and_targets(
            horizon,
            target_component,
        )
        horizon, target_component = horizons[0], target_components[0]

        foreground_X = self.explainers._create_regression_model_shap_X(
            foreground_series, foreground_past_covariates, foreground_future_covariates
        )

        shap_ = self.explainers.shap_explanations(
            foreground_X, [horizon], [target_component]
        )

        return shap.force_plot(
            base_value=shap_[horizon][target_component],
            features=foreground_X,
            out_names=target_component,
            **kwargs,
        )

        Display a shap force_plot for one target and one horizon, for a given foreground_series.
        It displays shap values of each lag/covariate with an additive force layout.

        Once the plot is displayed, select "original sample ordering"
        to observe the time series chronologically.

        Parameters
        ----------
        foreground_series
            Optionally, the target series to explain. Can be multivariate. If `None`, will use the `background_series`.
        foreground_past_covariates
            Optionally, a past covariate series if required by the forecasting model. If `None`, will use the
            `background_past_covariates`.
        foreground_future_covariates
            Optionally, a future covariate series if required by the forecasting model. If `None`, will use the
            `background_future_covariates`.
        horizon
            Optionally, an integer for the point/step in the future to explain, starting from the first prediction
            step at 1. `horizons` must not be larger than `output_chunk_length`.
        target_component
            Optionally, the target component to plot. If the target series is multivariate, the target component
            must be specified.
        **kwargs
            Optionally, additional keyword arguments passed to `shap.force_plot()`.
        
darts/explainability/shap_explainer.py