Tengo un gráfico de barras creado en chart.js y su configuración es la siguiente:
import Chart from 'chart.js/auto'; document.addEventListener("turbo:load", function(e) { let manufacturersPieChartCanvas = document.getElementById('manufacturers-pie-chart'); if (manufacturersPieChartCanvas) { let labels = JSON.parse(manufacturersPieChartCanvas.dataset.manufacturers_chart_labels); let data = JSON.parse(manufacturersPieChartCanvas.dataset.manufacturers_chart_data); const config = { type: 'bar', data: { labels: labels, datasets: [{ backgroundColor: ['yellow', 'red', 'green', 'blue'], data: data, hoverOffset: 4 }] }, options: { responsive: true, categoryPercentage: 1, barPercentage: 0.8, scaleShowValues: false, indexAxis: 'y', scales: { yAxes: [{ ticks: { autoSkip: false } }] } } }; let manufacturersPieChart = new Chart( manufacturersPieChartCanvas, config ); } })Una parte de esto se ve así:
Estoy tratando de permitir que aparezcan TODOS los títulos de las barras. He seguido las sugerencias sobre SO, con respecto a autoSkip false pero no parecen tener ningún efecto. Para este gráfico, es imperativo que todos los títulos de las barras se muestren todo el tiempo. Además, preferiría que se aumentara la altura para que cada barra fuera un poco más gruesa. He intentado con las opciones de configuración y puedo hacerlas más gruesas, pero el área general del gráfico no aumenta para acomodarlas.
¿Alguna sugerencia para solucionar estos problemas?
Gracias.
Está tratando de definir sus escalas en la sintaxis V2 mientras usa V3, le aconsejo leer primero la guía de migración si está transfiriendo desde V2.
Para hacer que las barras sean un poco más gruesas, puede aumentar el porcentaje de barPercentage y el porcentaje de categoryPercentage a 1, pero esto eliminará todo el espacio entre las barras. La única otra opción para hacerlos más grandes es darle al gráfico más espacio haciendo que el lienzo sea más grande usando CSS.
var options = { type: 'bar', data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], backgroundColor: 'pink', barPercentage: 1, categoryPercentage: 1 }, { label: '# of Points', data: [7, 11, 5, 8, 3, 7], backgroundColor: 'orange', barPercentage: 1, categoryPercentage: 1 } ] }, options: { indexAxis: 'y', scales: { y: { ticks: { autoSkip: false } } } } } var ctx = document.getElementById('chartJSContainer').getContext('2d'); new Chart(ctx, options); <body> <canvas id="chartJSContainer" width="600" height="400"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.js"></script> </body>