Добавление меток данных в Matplotlib - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь добавить точки данных в мой график matplotlib. Я использую класс временных рядов и поворачиваю данные как столбец временного индекса и столбец значений. Я рисую прошлые и прогнозируемые значения на графике. Я хочу добавить метки данных на график, как на изображении DataLabels Мой оригинальный код выглядит следующим образом:

for value, pivot_df in self.time_series_values_to_df_pvt.items():
        try:
            adf_test = adfuller(pivot_df[self.pvt_value])
        except ValueError as err:
            continue
        test_statistics = adf_test[0]
        p_value = adf_test[1]
        if p_value <= 0.05:
            print("p_value:", adf_test[1])
            print("Test Statistics:", adf_test[0])
            arima_dict = self.arimaopt_values(pivot_df)
            model_results, mean_abs_err = self.model_fitting(pivot_df, arima_dict['order'],
                                                             arima_dict['seasonal_order'])
            diff_forecast = self.forecast(model_results, False, None)
            fig, ax = plt.subplots(figsize=(20, 10))
            plt.plot(pivot_df, label='observed', color='blue')
            plt.plot(diff_forecast, label='forecast', color='red')
            plt.legend()
            file = self.figure_path + str(value) + '.png'
            print(file)
            plt.savefig(file)
            plt.show()

Когда я исследовал, я нашел некоторые результаты для добавления меток данных и Я изменил свой код, как показано ниже:

for value, pivot_df in self.time_series_values_to_df_pvt.items():
        try:
            adf_test = adfuller(pivot_df[self.pvt_value])
        except ValueError as err:
            continue
        test_statistics = adf_test[0]
        p_value = adf_test[1]
        if p_value <= 0.05:
            print("p_value:", adf_test[1])
            print("Test Statistics:", adf_test[0])
            arima_dict = self.arimaopt_values(pivot_df)
            model_results, mean_abs_err = self.model_fitting(pivot_df, arima_dict['order'],
                                                             arima_dict['seasonal_order'])
            diff_forecast = self.forecast(model_results, False, None)
            fig, ax = plt.subplots(figsize=(20, 10))
            plt.plot(pivot_df, label='observed', color='blue')
            plt.plot(diff_forecast, label='forecast', color='red')
            for x,y in zip(pivot_df,diff_forecast):
                label='test'
                plt.annotate(label, (x,y),ha='center',textcoords='offset points', xytext=(0,10))
            plt.legend()
            file = self.figure_path + str(value) + '.png'
            print(file)
            plt.savefig(file)
            plt.show()

Но теперь, когда я пытаюсь экспортировать или показать графики, я вижу, что они пусты. Спасибо за вашу помощь.

...