簡體   English   中英

帶有 Chart JS 的 Django 時間序列

[英]Django Time Series with Chart JS

我正在構建一個 Django 應用程序,它動態地將數據提供給 Chart JS。 因為我試圖將兩個線系列連接在一起(歷史值和預測),所以我試圖讓 Chart JS 理解 NaN。 代碼是這樣寫的:

<script>

        new Chart(document.getElementById("chart"), {

          type: 'line',
          data: {
            labels: {{ new_dates|safe }},
            datasets: [
              {
                  data: {{ orig_val|safe }},
                  label: "Historical Sales",
                  borderColor: "#3e95cd",
                  fill: false
                  
              },
              {
                  data: {{ preds|safe }},
                  label: "Predictions",
                  borderColor: "#22DD66",
                  fill: false
                  
              }
            ]
          },
          options: {
            title: {
              display: true,
              text: 'output chart'
            },
            maintainAspectRatio: false,
            responsive: true,
            scales: {
                xAxes: [{
                    gridLines: {
                        display:false
                    }
                }],
                yAxes: [{
                    gridLines: {
                        display:false
                    }
                }]
            },
            animation: {
                  duration: 2000,
              },
          }
        });
      </script>

這是控制台看到的:

<script>

        new Chart(document.getElementById("chart"), {

          type: 'line',
          data: {
            labels: ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12', '2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02', '2021-03', '2021-04', '2021-05', '2021-06', '2021-07', '2021-08', '2021-09', '2021-10', '2021-11', '2021-12', '2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07', '2022-08', '2022-09'],
            datasets: [
              {
                  data: [71.0, 67.0, 84.0, 65.0, 78.0, 74.0, 73.0, 88.0, 86.0, 77.0, 94.0, 123.0, 71.0, 77.0, 57.0, 36.0, 57.0, 78.0, 89.0, 100.0, 120.0, 98.0, 121.0, 155.0, 99.0, 86.0, 162.0, 103.0, 102.0, 117.0, 114.0, 121.0, 127.0, 128.0, 141.0, 175.0, 124.0, 121.0, 139.0, nan, nan, nan, nan, nan, nan],
                  label: "Historical Sales",
                  borderColor: "#3e95cd",
                  fill: false,
                  spanGaps: true
              },
              {
                  data: [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 100.2935, 154.556, 122.833, 109.4725, 160.0235, 104.568],
                  label: "Predictions",
                  borderColor: "#22DD66",
                  fill: false,
                  spanGaps: true
              }
            ]
          },
          options: {
            title: {
              display: true,
              text: 'output chart'
            },
            maintainAspectRatio: false,
            responsive: true,
            scales: {
                xAxes: [{
                    gridLines: {
                        display:false
                    }
                }],
                yAxes: [{
                    gridLines: {
                        display:false
                    }
                }]
            },
            animation: {
                  duration: 2000,
              },
          }
        });
      </script>

但是,我不斷收到此錯誤:

未捕獲的 ReferenceError:nan 未定義在(索引):40:282

這些“nan”是由 Python 使用 Numpy 生成的,如下所示: y_hat = np.append(y, np.zeros(6) + np.nan).tolist()

似乎 Chart JS 確實知道如何讀取“null”值,我只是不知道如何將 Python 轉換為 Chart JS 可以實際讀取的東西。

有任何想法嗎? 謝謝!

回答了我自己的問題。 只需使用 .astype(str) 將數組轉換為字符串。 像這樣:np.append(np.zeros(39) + np.nan, array_of_numbers).astype(str)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM