粥壊岳姻看の床議サイトに遺鞄温姻岳.逮壊のグラフを燕幣したい
峻さん、こんにちは。室宝蝕�kグル�`プの稼-看噛温敬温稼です。
ディスプレイを仟距しました。參念のディスプレイは罪�澆�秘ってソ�`スコ�`ドが�iみ仭かったのですが、書はばっちり需えます。
云籾です。
�嶬據�輝芙ではとあるシステムを坪�uしており、珂温姻一糸看敬稼で芝峰した譜柴慕を需やすくするために粥壊岳姻看で床議サイトを更廏しています。�蠅靴�は參念の誘後をご鳩範ください。その坪�uも書はテストフェ�`ズに秘りました。テストの彜趨はテスト��晒爆�澆伐讃澪楼k伏爆�澆念冦佞靴燭い發里任后�書指は遺鞄温姻岳.逮壊でグラフを宙鮫して、粥壊岳姻看の床議サイトに燕幣する圭隈を府初します。
朕肝
Chart.js
古勣
遺鞄温姻岳.逮壊は酒�gにグラフを宙鮫竃栖る、干温厩温皆界姻庄沿岳のライブラリです。鰻看糸艶などの桟廠が涙くても強恬します。箭えば參和の堰意珂晦ファイルを喘吭してブラウザで蝕くと允グラフが燕幣されます。
<html>
<head></head>
<body>
<div style="width: 80%">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('myChart');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
</body>
</html>
孵れ�潺哀薀佞鮹茲�
貧芝のサンプルは允グラフでした。肝はソ�`スコ�`ドを1つ1つ弖いながら、�g縞に孵れ�潺哀薀佞魃輅召靴討澆泙靴腓Α�まず恷兜は界鞄温姻岳.逮壊のライブラリを�iみ�zむところからです。
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>界鞄温姻岳.逮壊を�iみ�zんでいます。蒙に�h苧は音勣かと房います。
<div style="width: 80%">
<canvas id="myChart"></canvas>
</div>
<!-- 福待 -->
const ctx = document.getElementById('myChart');
グラフを宙鮫する勣殆のコンテキストを函誼しています。貧芝はid="myChart"の界温稼厩温壊勣殆にグラフを宙鮫します。
new Chart(ctx, {
type: 'line',
data: {
labels: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
datasets: [
{
label: 'Dataset 1',
data: [89, 55, 40, 42, 46, 6, 27],
},
{
label: 'Dataset 2',
data: [0, 47, 73, 37, 85, 76],
},
{
label: 'Dataset 3',
data: [56, 98, 23, 27, 32, 53, 67, 34],
}
]
},
options: {},
});
new Chart(...)によりグラフを宙鮫します。及1哈方には枠ほど函誼した勣殆のコンテキストを峺協します。及2哈方には宙鮫するグラフの秤烏を峺協します。
data.labelsは罪已です。サンプルでは輿袗から晩袗までの袗晩を峺協しています。
data.datasetsは�g縞に宙鮫するデ�`タを峺協します。data.datasets.dataの坪否によって�k已が徭強議に距屁されます。また、data.datasets.dataには塘双を峺協しますが、その塘双の勣殆方はdata.labelsと揖じか、それ參和にする駅勣があります。もし、data.labelsの勣殆方參貧を峺協した魁栽、階狛蛍は宙鮫されません。
畠悶のソ�`スコ�`ドは參和の宥りです。
<html>
<head></head>
<body>
<div style="width: 80%">
<canvas id="myChart"></canvas>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('myChart');
new Chart(ctx, {
type: 'line',
data: {
labels: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
datasets: [
{
label: 'Dataset 1',
data: [89, 55, 40, 42, 46, 6, 27],
},
{
label: 'Dataset 2',
data: [0, 47, 73, 37, 85, 76],
},
{
label: 'Dataset 3',
data: [56, 98, 23, 27, 32, 53, 67, 34],
}
]
},
options: {},
});
</script>
</body>
</html>

��鬉離哀薀佞い蹐い�
遺鞄温姻岳.逮壊は允グラフと孵れ�潺哀薀孀塒發砲���鬉靴討い泙后R塹造砲い�つか府初します。鮫�颪鬟�リックすると巷塀サイトのサンプルペ�`ジに敬びます。
允グラフと孵れ�潺哀薀�
バブルチャ�`ト
パイチャ�`ト
レ�`ダ�`チャ�`ト
粥壊岳姻看で宙鮫する圭隈
粥壊岳姻看でグラフを宙鮫するには、ちょっとしたコツが駅勣になります。なぜなら、グラフを宙鮫するタイミングが、ビルドするときではなく、床議堰意珂晦を鮫中に燕幣するときだからです。グラフ宙鮫に駅勣なデ�`タを、床議堰意珂晦に托め�zむ駅勣があります。

床議堰意珂晦にデ�`タを托め�zむには、堰意珂晦のカスタム勣殆を聞います。
<chart-provider data-chartdata={JSON.stringify(progressChartData)}>
<h3>グラフ</h3>
<canvas/>
</chart-provider>
<script>
import { Chart, registerables, type ChartData } from "chart.js"
Chart.register(...registerables);
class ChartProvider extends HTMLElement {
constructor() {
super();
const ctx = this.getElementsByTagName("canvas");
const chartData: ChartData = JSON.parse(this.dataset.chartdata ?? "{}");
new Chart(ctx, {
type: 'line',
data: Object.assign(chartData, {}),
options: {
scales: {
y: {
type: "linear",
display: true,
position: "left",
beginAtZero: true
},
y1: {
type: "linear",
display: true,
position: "right",
beginAtZero: true,
grid: {
drawOnChartArea: false,
},
}
}
},
});
}
}
customElements.define("chart-provider", ChartProvider)
</script>chart-providerはカスタム勣殆です。奉來としてdata-chartdataを鞭け函ります。カスタム勣殆は42佩朕にあるcustomElements.define(...)で協吶します。及2哈方にはHTMLElementを�@覚したクラスを峺協します。
ChartProviderの嶄附はシンプルです。this.dataset.chartdataで奉來data-chartdataの坪否が函誼できます。あとは、宥械の遺鞄温姻岳.逮壊でグラフを宙鮫するだけです。
おわりに
酒�gにグラフが宙鮫竃栖るのっていいですね。坪�uプロジェクトでは參和のようにテスト彜趨を燕�屬靴討�り、�v�S宀がブラウザから�毫Xに鳩範竃栖るようにしています。

ではまた。
