제가 구글 차트에 유포도를 그렸어요.
14081 단어 GoogleChartJavaScript
입문
과정의 팀 개발에서 산포도를 만들고 거기에 참여했기 때문에 출력하고 싶어요.
인도물
이렇게 하면 산포도를 만들 수 있다.
참조 소스
Google Charts (Scatter Charts)
또한 산포도의 원본 데이터로서 GuluNabiAPI에서 얻은 데이터를 이용하고 있다.
인형 API
※ 2021/1/15 이후에는 새로 사용할 수 없을 것 같습니다.
개발 환경
편집기:vscode
전체 소스 코드
index.html
<div id="target" class="box" style="width: 700px; height: 500px;"></div>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<!-- targetタグのdivに散布図を挿入-->
<script src="js/googleScatter.js"></script>
googleScatter.jsconst drawScatter = (result, userLatlng) => {
google.charts.load('current', { 'packages': ['corechart'] });
google.charts.setOnLoadCallback(drawChart);
var mapLatlng = [
]
function drawChart() {
var data = new google.visualization.DataTable();
// [距離、金額、店名]のデータテーブルを作成
data.addColumn('number', '距離');
data.addColumn('number', '金額');
data.addColumn({ type: 'string', role: 'tooltip' });
// ぐるなびAPIから情報を取得し、行を追加
result.rest.map(item => {
var latlng = new google.maps.LatLng(item.latitude, item.longitude);
mapLatlng.push([item.latitude, item.longitude])
var distance = google.maps.geometry.spherical.computeDistanceBetween(userLatlng, latlng);
data.addRow([distance, item.budget, item.name]);
});
// mouseOnの時に表示される吹き出しを調整
var formatter = new google.visualization.PatternFormat('店名 {2} :{0}m :{1} 円 ');
formatter.format(data, [0, 1, 2], 2);
// 実際の散布図の設定
var options = {
title: '店の距離と金額',
hAxis: { title: '距離', format: '###m', minValue: 0, maxValue: 15 },
vAxis: { title: '金額', format: '###円', minValue: 0, maxValue: 15 },
legend: 'none'
};
// コンテナに散布図を挿入
var chart = new google.visualization.ScatterChart(document.getElementById('target'));
// 散布図の店が押された時の処理を記入
google.visualization.events.addListener(chart, 'select', function () {
var selection = chart.getSelection();
// console.log(selection[0].row);
map.panTo(new google.maps.LatLng(mapLatlng[selection[0].row][0], mapLatlng[selection[0].row][1]))
});
chart.draw(data, options);
}
}
index.내용
googleScatter.js 내용
1. 산포도 데이터의 원시 표의 구조를 묘사한다
var data = new google.visualization.DataTable();
// [距離、金額、店名]のデータテーブルを作成
data.addColumn('number', '距離');
data.addColumn('number', '金額');
data.addColumn({ type: 'string', role: 'tooltip' });
2. 테이블에 데이터 넣기
// ぐるなびAPIから情報を取得し、行を追加
result.rest.map(item => {
var latlng = new google.maps.LatLng(item.latitude, item.longitude);
mapLatlng.push([item.latitude, item.longitude])
var distance = google.maps.geometry.spherical.computeDistanceBetween(userLatlng, latlng);
data.addRow([distance, item.budget, item.name]);
});
3. 산포도 속성 설정
// mouseOnの時に表示される吹き出しを調整
var formatter = new google.visualization.PatternFormat('店名 {2} :{0}m :{1} 円 ');
formatter.format(data, [0, 1, 2], 2);
// 実際の散布図の設定
var options = {
title: '店の距離と金額',
hAxis: { title: '距離', format: '###m', minValue: 0, maxValue: 15 },
vAxis: { title: '金額', format: '###円', minValue: 0, maxValue: 15 },
legend: 'none'
};
formatter 부분에서 {0} {1} {2}는 각각 표의'열 번호-1'을 표시합니다.그러니까 이번에.
{0}= 거리
{1}= 금액
{2}= 가게 이름
옵션 부분에서 산포도의'제목, 가로축, 세로축'등을 설정합니다.
그 밖에 표의 첫 번째 열은 hAxis 요소이고, 두 번째 열은 vAxis 요소이다.
4. 용기에 만들어진chart를 삽입합니다
// コンテナに散布図を挿入
var chart = new google.visualization.ScatterChart(document.getElementById('target'));
5. 산포도를 클릭할 때의 처리를 기술한다
// 散布図の店が押された時の処理を記入
google.visualization.events.addListener(chart, 'select', function () {
var selection = chart.getSelection();
// console.log(selection[0].row);
map.panTo(new google.maps.LatLng(mapLatlng[selection[0].row][0], mapLatlng[selection[0].row][1]))
});
파라미터에 "select"를 전달하면 그림을 뿌릴 때 점이 눌릴 때 이동합니다.또한 변수
selection
참고표의 index 부분.6. 차트 그리기
chart.draw(data, options);
반성점
변수의 성명 부분의 순서는 이해하기 어렵다
마지막
이번에는 Qiita의 첫 투고였지만 원본 코드를 기술하기 어렵다는 설명을 알게 되었습니다.
나는 다른 투고자의 작법을 좀 더 참고하고 싶다.
Reference
이 문제에 관하여(제가 구글 차트에 유포도를 그렸어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AigaGoto/items/10d9dad9b89021a5d0e0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)