(Einfache) JavaScript Library (pure), um Line Chart mit Dates zu zeichnen



  • Moin, ich kenne mich mit Frontend nicht so gut aus, versucht hatte ich Folgendes:

    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <meta charset="utf-8">
      <title>Chart(s)</title>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
      <script src="dist/chart.umd.js"></script>
    </head>
    
    <body>
      <header></header>
      <main>
        <div>
          <canvas id="chart1" width="600" height="600"></canvas>
        </div>
      </main>
      <footer></footer>
      <script>
        function loadChart(id, fn) {
          fetch(fn)
            .then(res => res.json())
            .then(data => {
              for (let i = 0; i < data.length; i++) {
                let e = data[i];
                e.t = new Date(e.x);
              }
              console.log(data);
              let config1 = {
                type: "line",
                options: {
                  scales: {
                    xAxes: [{
                      type: "time",
                    }]
                  }
                },
                datasets: [{
                  data: data
                }],
                options: {
                  responsive: true,
                  plugins: {
                    legend: {
                      position: "top",
                    },
                    title: {
                      display: true,
                      text: "Sums Line Chart"
                    }
                  }
                },
              };
              let ctx1 = document.getElementById(id).getContext("2d");
              new Chart(ctx1, config1);
            });
        }
        loadChart("chart1", "./sums.json");
      </script>
    </body>
    
    </html>
    

    In der Konsole wird auch brav das Data-Json ausgegeben: https://i.postimg.cc/ZYNNBYPf/grafik.png

    Zu sehen ist aber NIX!!!

    Gibt es nicht eine einfache JS-Library, die das kann? Alternativ würde ich halt den Chart als PNG im Backend (vor-)rendern und ganz auf JS verzichten...



  • Hier noch zwei Links zu der bisherigen Library (die mir eigentlich gar nicht geholfen hatten):

    https://www.chartjs.org/docs/latest/charts/line.html
    https://stackoverflow.com/questions/47875045/chart-js-creating-a-line-graph-using-dates



  • Hat schon geklappt ☑ https://i.postimg.cc/xdDLyYBR/grafik.png

    <!DOCTYPE html>
    <html lang="de">
    
    <head>
      <meta charset="utf-8">
      <title>Chart(s)</title>
      <script type="text/javascript" src="https://unpkg.com/dygraphs@2.2.1/dist/dygraph.min.js"></script>
      <link rel="stylesheet" type="text/css" href="https://unpkg.com/dygraphs@2.2.1/dist/dygraph.min.css" />
    </head>
    
    <body>
      <header></header>
      <main>
        <div id="chart1" width="600" height="600"></div>
      </main>
      <footer></footer>
      <script>
        function loadChart(id, fn) {
          fetch(fn)
            .then(res => res.json())
            .then(data => {
              let data2 = [];
              for (let i = 0; i < data.length; i++) {
                let e = data[i];
                data2.push([new Date(e.x), e.y]);
              }
              console.log(data);
              console.log(data2);
    
              let g = new Dygraph(document.getElementById(id), data2, {
                legend: "always",
                title: fn,
                labels: ["x", "A"],
              });
            });
        }
        loadChart("chart1", "./sums.json");
      </script>
    </body>
    
    </html>
    

    Merke: Verwende am besten niemals eine Library, die nicht open source ist...


Anmelden zum Antworten