Я хочу нарисовать горизонтальную гистограмму с помощью Chart.js, но он продолжает масштабировать диаграмму вместо использования высоты, которую я назначаю холсту из скрипта.
Есть ли способ установить высоту графика из скрипта?
HTML
<div class="graph">
<div class="chart-legend">
</div>
<div class="chart">
<canvas id="myChart"></canvas>
</div>
</div>
JavaScript
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
}
}]
}
}
});
javascript
jquery
chart.js
Винсент Т
источник
источник
Если вы отключите сохранение соотношения сторон в параметрах, тогда будет использоваться доступная высота:
источник
destroy()
создадите диаграмму, а затем создадите ее снова на том же холсте во второй раз, высота холста может измениться после разрушения и ее придется повторно применить перед созданием. Тем не менее, вы можете избежать уничтожения иupdate
вместо этого использовать метод, если не измените параметры.Самый простой способ - создать контейнер для холста и установить его высоту:
и установить
источник
maintainAspectRatio
чтобыfalse
в настройках графа, в противном случаеheight
назначается черезstyle
атрибут не будет на самом деле вступит в силу.responsive
параметра являетсяtrue
. Подробности: chartjs.org/docs/latest/general/…height
свойство должно находиться в родительском элементе, а не на холстеВы можете обернуть свой элемент холста в родительский div, относительно позиционированный, а затем присвоить этому div желаемую высоту, установив в параметрах keepAspectRatio: false
источник
Это сработало для меня:
Я установил высоту из HTML
Затем я отключил сохранение соотношения сторон
источник
Он прав. Если вы хотите остаться с jQuery, вы можете сделать это
или
источник
Установка для свойства aspectRatio диаграммы значения 0 помогло мне ...
источник
Вы должны использовать атрибут высоты html для элемента холста как:
источник
Я создал контейнер и установил для него желаемую высоту порта просмотра (в зависимости от количества диаграмм или конкретных размеров диаграммы):
Чтобы быть динамичным по размеру экрана, я установил контейнер следующим образом:
Конечно, очень важно (как уже неоднократно упоминалось) установить следующие
option
свойства вашей диаграммы:источник
Вы также можете установить размеры холста
Затем установите для параметров реагирования значение false, чтобы всегда поддерживать график в указанном размере.
источник
Требовалось, чтобы диаграмма заполняла родительский элемент на 100%, а не задавала высоту вручную, и проблема заключалась в том, чтобы заставить родительский div всегда заполнять оставшееся пространство.
После настройки параметров отзывчивости и соотношения (см. Соответствующий документ chartjs ) следующий css сработал :
HTML
СКС:
источник
Просто чтобы добавить к ответу @numediaweb
Если вы бьетесь головой о стену, потому что после выполнения инструкций по установке
maintainAspectRatio=false
: я изначально скопировал свой код из примера, который я получил на веб-сайте об использовании Chart.js с Angular 2+:Чтобы это работало правильно, вы должны удалить встроенные (и ненужные).
style="display: block"
Вместо этого определить класс для включающего div и определить его высоту в CSS.После этого диаграмма должна иметь гибкую ширину, но фиксированную высоту.
источник