粥壊岳姻看の床議サイトに遺鞄温姻岳.逮壊のグラフを燕幣したい
峻さん、こんにちは。室宝蝕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プロジェクトでは參和のようにテスト彜趨を燕屬靴討り、vS宀がブラウザから毫Xに鳩範竃栖るようにしています。

ではまた。
