JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdn.jsdelivr.net/npm/chart.js@3.9.1/dist/chart.min.js"></script>

<canvas id="lineChart"></canvas>

JavaScript

// 気象庁のAPIから天気JSONファイルを読み取る
const KYOTOareaCODE = 260000;
const TOKYOareaCODE = 130000;
const url = `https://www.jma.go.jp/bosai/forecast/data/forecast/${KYOTOareaCODE}.json`;

// JSONデータ取得後に呼び出す関数
function formatWeather(weather){
	//まずAPIのデータから一週間の天気予報を抽出
	const weeklyForecast = weather[1].timeSeries[1];
  
  //ここでは、ラベルとなる日付と最低気温、最高気温を抽出
  const timeStamps = weeklyForecast.timeDefines;
  const tempsMin = weeklyForecast.areas[0].tempsMin;
  const tempsMax = weeklyForecast.areas[0].tempsMax;
  
  //グラフとして扱えるように、文字列型->数字へ変換
  let timeStampArray = [];
  let tempsMinArray = [];
  let tempsMaxArray = [];
  
  for (var timeStamp of timeStamps) {
    var dt = new Date(timeStamp)
    timeStampArray.push(dt.toLocaleDateString());
    //ここでは、2024/2/12のような日付表記にしている。
  }
  
  for (var tempMin of tempsMin) {
    tempsMinArray.push(Number(tempMin));
    //数字へ変換し、新しい配列へ格納
  }
  
  for (var tempMax of tempsMax) {
    tempsMaxArray.push(Number(tempMax));
    //数字へ変換し、新しい配列へ格納
  }
  
  return [timeStampArray, tempsMinArray, tempsMaxArray]
}

function chartMaker (data) {
	//グラフを描きたい領域を設定
  let lineCtx = document.getElementById("lineChart");
  
  // 線グラフの設定
  let lineConfig = {
    type: 'line',
    data: {
      labels: data[0],  //=timeStampArray
      
      datasets: [{
        label: "最低気温",
        data: data[1],   //=tempsMinArray
        borderColor: '#f88',
      }, {
        label: "最高気温",
        data: data[2],  //=tempsMaxArray
        borderColor: '#484',
      }],
      
    },
    options: {
      scales: {
        // Y軸の最大値・最小値、目盛りの範囲などを設定する
        y: {
          suggestedMin: -5,   //y軸の最小値
          suggestedMax: 40,  //y軸の最大値
          ticks: {
            stepSize: 5,     //y軸の目盛り幅
          }
        }
      },
    },
  };
  
  //描きたい領域とグラフのデータなどをインスタンスへ渡す=描画
  let lineChart = new Chart(lineCtx, lineConfig);
}


// API実行から他の関数も実行(返り値は次の変数へ格納される)
fetch(url)
  .then( response => response.json() )
  .then( weather => formatWeather(weather))
  .then( data =>...