SkyoceanHome
Home
Privacy
ダウンロード
SkyShop
Updated Information
チュートリアルコード集
記事編集
日付
ジャンルのカテゴリ―名
名前を選択して下さい。
Contexts
Controllers
Databases
Htmls
JavaScripts
Models
MVCTutorials
Others
Styles
Views
タイトル
内容の要旨
<p><strong>1.jchart.jsをダウンロード</strong></p><p>プロジェクトの_Layout.cshtmlの<head>内に下記のように記述</p><p>---------------------------------------------------------------------------------------------------------------------</p><p data-pasted="true"><!DOCTYPE html></p><p><html lang="en"></p><p><head></p><p> <meta charset="utf-8" /></p><p> <meta name="viewport" content="width=device-width, initial-scale=1.0" /></p><p> <title>@ViewData["Title"] - Kakei</title></p><p> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /></p><p> <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /></p><p> <link rel="stylesheet" href="~/Kakei.styles.css" asp-append-version="true" /></p><p> <span style="font-size: 14px;"><strong> <script src="<a data-fr-linked="true" href="https://cdn.jsdelivr.net/npm/chart.js" style="font-size: 14px;">https://cdn.jsdelivr.net/npm/chart.js"&gt</a>;</script></strong></span></p><p></head></p><p>--------------------------------------------------------------------------------------------------------------------------</p><p><strong>Controller側のコード</strong></p><p data-pasted="true">// データベースからデータを取得</p><p> var records = await _context.Payment.ToListAsync();</p><p>var mylabel = recordsi.Select(r => r.PayCategory.CategoryName).ToArray();</p><p>var mydata = records.Select(r =>r..Amount) .ToArray();</p><p>Jsonのオブジェクトを作成して、Viewに送る。</p><p data-pasted="true"> var chartData = new</p><p> {</p><p> labels = mylabel,</p><p> data = mydata </p><p> };</p><p> return View(chartData);</p><p>----------------------------------------------------------------</p><p>//labelに相当するデータにリレーションシップがあるデータベースの場合</p><p>//Distinctしなければならないlabelであるから</p><p data-pasted="true">//データベースからName列をDistinctし、Amount列を取得する例:</p><p>var xData = _context.Payment.Include(p => p.PayCategory) //PayCategoryにstring Name列がある</p><p> .GroupBy(x => x.PayCategory.CategoryName)</p><p> .Select(g => new</p><p> {</p><p> labels = g.Key, // DistinctなName</p><p> data = g.Sum(x => x.Amount) // Distinctされた部分のAmountの合計 </p><p> })</p><p> .ToList();</p><p><br></p><p>// ラベルとデータを分離</p><p>var xlabels = xData.Select(x => x.labels).ToList();</p><p>var xdata = xData.Select(x => x.data).ToList();</p><p><br></p><p>var chartData = new</p><p>{</p><p> labels = xlabels,</p><p> data = xdata //mydata</p><p>};</p><p>//ViewBag.Labels = xlabels;</p><p>//ViewBag.Data = xdata; //左記2つのViewBagを使用してもチャートが作成できる。</p><p><br></p><p>// ビューにデータを渡す</p><p>return View(chartData);</p><p>--------------------------------------------------------------------------------------------------------------------------------------------</p><p><strong>Viewのコード</strong></p><p data-pasted="true"><div class="row"></p><p> <div class="col-md-6"></p><p> <h1>ド―ナツチャートで表示</h1></p><p> <div style="width: 50%; margin: auto;"></p><p> <canvas id="myPieChart"></canvas></p><p> </div></p><p><br></p><p> </div></p><p> <div class="col-md-6"></p><p> <h1>棒チャートで表示</h1></p><p> <h4>@ViewBag.TotalAmount</h4></p><p> <div style="width: 100%; margin: auto;"></p><p> <canvas id="myBarChart"></canvas></p><p> </div></p><p> </div></p><p></div></p><p><hr /></p><p><script></p><p><br></p><p> // サーバーから渡されたデータを取得</p><p> const chartData = @Html.Raw(Json.Serialize(Model))</p><p><br></p><p><br></p><p> // Chart.jsで円グラフを描画</p><p> const ctx = document.getElementById('myPieChart').getContext('2d');</p><p> new Chart(ctx, {</p><p> type: 'doughnut', // 円グラフ</p><p> data: {</p><p> labels: chartData.labels, // ラベル</p><p> datasets: [{</p><p> data: chartData.data, // データ</p><p> backgroundColor: [</p><p> 'rgba(255, 99, 132, 0.2)',</p><p> 'rgba(54, 162, 235, 0.2)',</p><p> 'rgba(255, 206, 86, 0.2)',</p><p> 'rgba(75, 192, 192, 0.2)',</p><p> 'rgba(255,20,147,0.2)',</p><p> 'rgba(0,255,255,0.2)',</p><p> // 'rgba(189,183,107,0.2)'</p><p> ],</p><p> borderColor: [</p><p> 'rgba(255, 99, 132, 1)',</p><p> 'rgba(54, 162, 235, 1)',</p><p> 'rgba(255, 206, 86, 1)',</p><p> 'rgba(75, 192, 192, 1)',</p><p> 'rgba(255,20,147,1)',</p><p> 'rgba(0,255,255,1)',</p><p> // 'rgba(189,183,107,0.1)'</p><p> ],</p><p> borderWidth: 1</p><p> }]</p><p> },</p><p> options: {</p><p> responsive: true,</p><p> plugins: {</p><p> legend: {</p><p> position: 'top',</p><p> },</p><p> // tooltip:{</p><p> // callbacks:{</p><p> // label: function(tooltipItem){</p><p> // return tooltipItem.label + ';' + tooltipItem.row + '%';</p><p> // }</p><p> // }</p><p> // }</p><p> }</p><p> }</p><p> });</p><p><br></p><p> const ctx1 = document.getElementById('myBarChart').getContext('2d');</p><p> new Chart(ctx1, {</p><p> type: 'bar', // 円グラフ</p><p> data: {</p><p> labels: chartData.labels, // ラベル</p><p> datasets: [{</p><p> axis: 'y',</p><p> label: '家計簿',</p><p> data: chartData.data, // データ</p><p> backgroundColor: [</p><p> 'rgba(255, 99, 132, 0.2)',</p><p> 'rgba(54, 162, 235, 0.2)',</p><p> 'rgba(255, 206, 86, 0.2)',</p><p> 'rgba(75, 192, 192, 0.2)',</p><p> 'rgba(255,20,147,0.2)',</p><p> 'rgba(0,255,255,0.2)',</p><p> // 'rgba(189,183,107,0.2)'</p><p> ],</p><p> borderColor: [</p><p> 'rgba(255, 99, 132, 1)',</p><p> 'rgba(54, 162, 235, 1)',</p><p> 'rgba(255, 206, 86, 1)',</p><p> 'rgba(75, 192, 192, 1)',</p><p> 'rgba(255,20,147,1)',</p><p> 'rgba(0,255,255,1)',</p><p> // 'rgba(189,183,107,0.1)'</p><p> ],</p><p> borderWidth: 1</p><p> }]</p><p> },</p><p> options: {</p><p> responsive: true,</p><p> plugins: {</p><p> legend: {</p><p> position: 'top',</p><p> },</p><p> options: {</p><p> indexAxis: 'y',</p><p> }</p><p> // tooltip:{</p><p> // callbacks:{</p><p> // label: function(tooltipItem){</p><p> // return tooltipItem.label + ';' + tooltipItem.row + '%';</p><p> // }</p><p> // }</p><p> // }</p><p> }</p><p> }</p><p> });</p><p></script></p><p>--------------------------------------------------------------------------------------------------------------------------------</p><p><strong>ViewBagをデータに利用する場合のscript</strong></p><p data-pasted="true"> // Chart.jsで円グラフを描画</p><p> const ctx = document.getElementById('myPieChart').getContext('2d');</p><p> new Chart(ctx, {</p><p> type: 'doughnut', // 円グラフ</p><p> data: {</p><p> labels: <strong>@Html.Raw(Json.Serialize(ViewBag.Labels)</strong>), // ラベル</p><p> datasets: [{</p><p> data: <strong>@Html.Raw(Json.Serialize(ViewBag.Data)</strong>), // データ</p><p> backgroundColor: [</p><p> 'rgba(255, 99, 132, 0.2)',</p><p><br></p><p><br></p><p data-f-id="pbf" style="text-align: center; font-size: 14px; margin-top: 30px; opacity: 0.65; font-family: sans-serif;">Powered by <a href="https://www.froala.com/wysiwyg-editor?pb=1" title="Froala Editor">Froala Editor</a></p>
コピーする
添付画像
画像を変更
Back to List
//検索文:Editor内でHTMLコードをコピーさせる