【JavaScript】 Chart.js를 사용하여 꺾은 선형 차트를 표시하는 방법
대상자
목적
※화상의 한가운데의 검색 기능에 관해서는 아래 기사로 쓰고 있습니다.
실제 절차와 예
1. 전제
*본의 투고수를 유저의 마이 페이지(상세 화면)로 집계하고 있어 그 수치를 꺾은선 그래프화합니다. 집계 방법은 아래 기사에서
2.지난 7일간의 투고수를 취득
사용자 내 페이지에 게시물 수를 표시합니다.
book.rb
scope :created_today, -> { where(created_at: Time.zone.now.all_day) } # 今日
scope :created_yesterday, -> { where(created_at: 1.day.ago.all_day) } # 前日
scope :created_two_days_ago, -> { where(created_at: 2.day.ago.all_day) } #2日前
scope :created_three_days_ago, -> { where(created_at: 3.day.ago.all_day) } #3日前
scope :created_four_days_ago, -> { where(created_at: 4.day.ago.all_day) } #4日前
scope :created_five_days_ago, -> { where(created_at: 5.day.ago.all_day) } #5日前
scope :created_six_days_ago, -> { where(created_at: 6.day.ago.all_day) } #6日前
책의 투고수이므로, book 모델에 정의 붙이고 있습니다.
users_controller.rb
def show
@user = User.find(params[:id])
@books = @user.books
#過去7日分
@today_book = @books.created_today
@yesterday_book = @books.created_yesterday
@two_days_ago_book = @books.created_two_days_ago
@three_days_ago_book = @books.created_three_days_ago
@four_days_ago_book = @books.created_four_days_ago
@five_days_ago_book = @books.created_five_days_ago
@six_days_ago_book = @books.created_six_days_ago
end
book 모델에 정의한 액션을 User 컨트롤러에서 사용합니다 (연결을 짜고 있기 때문에).
views/users/show.html.erb
```` <!--過去7日間の投稿-->
<div class="user_show_margin">
<h3>過去7日分の投稿数</h3>
<table class="table table-bordered table_width">
<thead>
<tr>
<th>6日前</th>
<th>5日前</th>
<th>4日前</th>
<th>3日前</th>
<th>2日前</th>
<th>1日前</th>
<th>今日</th>
</tr>
</thead>
<tbody>
<tr>
<td><%=@six_days_ago_book.count %></td>
<td><%=@five_days_ago_book.count %></td>
<td><%=@four_days_ago_book.count %></td>
<td><%=@three_days_ago_book.count %></td>
<td><%=@two_days_ago_book.count %></td>
<td><%=@yesterday_book.count %></td>
<td><%=@today_book.count %></td>
</tr>
</tbody>
</table>
<!--折れ線グラフ-->
<div class="user_show_margin">
<%= render "users/graph" %>
</div>
이제 지난 7일간 분의 책의 투고수가 표시되게 되었습니다.
또한 view 하단에 그래프 표시할 수 있도록 부분 템플릿화한 코드를 작성하고 있습니다.
3. 꺾은선형 차트 설정
그래프는 아래와 같이
views/users/_graph.html.erb
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>グラフ</title>
</head>
<body>
<h3>折れ線グラフ</h3>
<canvas id="myLineChart"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script>
<script>
var ctx = document.getElementById("myLineChart");
var myLineChart = new Chart(ctx, {
// グラフタイプを設定する項目
type: 'line',
// データをセットする項目
data: {
labels: ['6日前', '5日前', '4日前', '3日前', '2日前', '1日前', '今日'],
datasets: [
{
label: '投稿した本の数',
data:
[<%=@six_days_ago_book.count %>,
<%=@five_days_ago_book.count %> ,
<%=@four_days_ago_book.count %>,
<%=@three_days_ago_book.count %>,
<%=@two_days_ago_book.count %>,
<%=@yesterday_book.count %>,
<%=@today_book.count %>
],
borderColor: "rgba(50,255,0,1",
backgroundColor: "rgba(0,0,0,0)"
},
],
},
// グラフのオプションをつける設定
options: {
title: {
display: true,
text: '7日間の本の投稿数'
},
scales: {
yAxes: [{
ticks: {
suggestedMax: 10,
suggestedMin: 0,
stepSize: 1,
callback: function(value, index, values){
return value
}
}
}]
},
}
});
</script>
</body>
</html>
해설
어떤 종류의 그래프를 설정합니다.
아래에서는 “line”을 하는 것으로 꺾은선 그래프를 나타내고 있습니다.
type: 'line',
다음에 그래프에 표시하는 데이터를 설정해 갑니다.
data: {
labels: ['6日前', '5日前', '4日前', '3日前', '2日前', '1日前', '今日'],
datasets: [
{
label: '投稿した本の数',
data:
[<%=@six_days_ago_book.count %>,
<%=@five_days_ago_book.count %> ,
<%=@four_days_ago_book.count %>,
<%=@three_days_ago_book.count %>,
<%=@two_days_ago_book.count %>,
<%=@yesterday_book.count %>,
<%=@today_book.count %>
],
#線の色
borderColor: "rgba(50,255,0,1",
#線の下の塗りつぶしの色
backgroundColor: "rgba(0,0,0,0)"
},
],
},
마지막은 데이터의 옵션 설정입니다.
options: {
#グラフのタイトル
title: {
display: true, #タイトル表示するかどうか
text: '7日間の本の投稿数' #タイトル名
},
#グラフの軸にかんして
scales: {
#Y軸
yAxes: [{
ticks: {
suggestedMax: 10, #軸の最大値
suggestedMin: 0, #軸の最小値
stepSize: 1, #軸の刻み幅
callback: function(value, index, values){
return value #軸のラベル
}
}
}]
},
}
});
이것으로 구현 완료입니다! !
참조
Chart.js에서 그래프를 그려 보았습니다.
작성자 코멘트
조금 전에 구현해 보았습니다만,
생각보다 쉽게 할 수 있었으므로, 기사로 해 분해해 생각해 보았습니다.
내 프로필
프로그래밍 학습 경력 3개월째의 계정입니다!
프로그래밍 스쿨에서 배운 내용이나 자신이 망설인 부분 등의 출력을 위해 발신하고 있습니다.
또, 프로그래밍 초학자에게 알기 쉽고, 간결하게 정리해 정보 공유할 수 있으면 좋다고 생각하고 있습니다.
만약, 투고한 기사안에 잘못등 있으면, 코멘트란에서 교수 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(【JavaScript】 Chart.js를 사용하여 꺾은 선형 차트를 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nao0725/items/86deb8d72ed96680b4ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【JavaScript】 Chart.js를 사용하여 꺾은 선형 차트를 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nao0725/items/86deb8d72ed96680b4ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)