Chart.js에서 차트 높이 설정
Chart.js로 가로 막대 차트를 그리고 싶지만 스크립트에 캔버스에 할당 한 높이를 사용하는 대신 차트의 크기를 계속 조정합니다.
스크립트에서 그래프의 높이를 설정하는 방법이 있습니까?
바이올린 참조 : Jsfidle
HTML
<div class="graph">
<div class="chart-legend">
</div>
<div class="chart">
<canvas id="myChart"></canvas>
</div>
</div>
자바 스크립트
var ctx = $('#myChart');
ctx.height(500);
var myChart = new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
maintainAspectRatio: false,
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
var ctx = $('#myChart');
요소 목록을 반환하는 것 같습니다 . 를 사용하여 첫 번째를 참조해야합니다 ctx[0]
. 또한 높이는 함수가 아니라 속성입니다.
내 코드에서 이렇게했습니다.
var ctx = document.getElementById("myChart");
ctx.height = 500;
옵션에서 가로 세로 비율 유지를 비활성화하면 사용 가능한 높이가 사용됩니다.
var chart = new Chart('blabla', {
type: 'bar',
data: {
},
options: {
maintainAspectRatio: false,
}
});
가장 쉬운 방법은 캔버스의 컨테이너를 만들고 높이를 설정하는 것입니다.
<div style="height: 300px">
<canvas id="chart"></canvas>
</div>
및 설정
options: {
responsive: true,
maintainAspectRatio: false
}
이것은 나를 위해 일했습니다.
HTML에서 높이를 설정했습니다.
canvas#scoreLineToAll.ct-chart.tab-pane.active[height="200"]
canvas#scoreLineTo3Months.ct-chart.tab-pane[height="200"]
canvas#scoreLineToYear.ct-chart.tab-pane[height="200"]
그런 다음 종횡비 유지를 비활성화했습니다.
options: {
responsive: true,
maintainAspectRatio: false,
You can wrap your canvas element in a parent div, relatively positioned, then give that div the height you want, setting maintainAspectRatio: false in your options
//HTML
<div id="canvasWrapper" style="position: relative; height: 80vh/500px/whatever">
<canvas id="chart"></canvas>
</div>
<script>
new Chart(somechart, {
options: {
responsive: true,
maintainAspectRatio: false
/*, your other options*/
}
});
</script>
He's right. If you want to stay with jQuery you could do this
var ctx = $('#myChart')[0];
ctx.height = 500;
or
var ctx = $('#myChart');
ctx.attr('height',500);
Set the aspectRatio property of the chart to 0 did the trick for me...
var ctx = $('#myChart');
ctx.height(500);
var myChart = new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
maintainAspectRatio: false,
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
myChart.aspectRatio = 0;
Just to add on to the answer given by @numediaweb
In case you're banging your head against the wall because after following the instructions to set maintainAspectRatio=false
: I originally copied my code from an example I got on a website on using Chart.js with Angular 2+:
<div style="display: block">
<canvas baseChart
[datasets]="chartData"
[labels]="chartLabels"
[options]="chartOptions"
[legend]="chartLegend"
[colors]="chartColors"
[chartType]="chartType">
</canvas>
</div>
To make this work correctly you must remove the embedded (and unnecessary) style="display: block"
Instead define a class for the enclosing div, and define its height in CSS.
Once you do that, the chart should have responsive width but fixed height.
참고URL : https://stackoverflow.com/questions/41953158/set-height-of-chart-in-chart-js
'programing tip' 카테고리의 다른 글
Cocoapods 설정이 터미널의 포드 설정 명령에서 멈춤 (0) | 2020.08.21 |
---|---|
데이터 바인딩을 사용하여 리소스의 문자열을 XML의 동적 변수와 결합하는 방법은 무엇입니까? (0) | 2020.08.21 |
AWS MySQL RDS 대 AWS DynamoDB (0) | 2020.08.21 |
이름이 'homestead'인 VirtualBox 머신이 이미 있습니다. (0) | 2020.08.21 |
C / C ++에서 바이트의 비트 순서를 바꾸는 가장 간단한 방법은 무엇입니까? (0) | 2020.08.21 |