有没有办法在Chart.js中只调整图表标题的底部填充?

kknvjkwl  于 2024-01-07  发布在  Chart.js
关注(0)|答案(2)|浏览(297)

基于documentation,Chart.js中标题的padding属性调整顶部和底部填充。然而,我想只调整底部填充。
我尝试使用padding对象:

  1. title:{
  2. display: true,
  3. text:'Population of cities in California',
  4. padding:{
  5. left:0,
  6. right:0,
  7. bottom:30,
  8. top:0
  9. }
  10. }

字符串
但这可能是不支持的,因为它只是把一切都搞砸了,使图表甚至不可见。我已经搜索了文档,谷歌了一下,看看这是否已经被问到的地方,但我找不到任何解决方案。
在Chart.js中有没有内置的方法来实现这一点?如果没有,最简单的解决方法是什么?

0sgqnhkj

0sgqnhkj1#

title.padding获取要在标题文本上方和下方添加的像素数。
有一种解决方法可以只在图表标题的底部添加填充。Plugin Core API提供了一系列可用于执行自定义代码的钩子。您可以使用afterDraw钩子直接在画布上使用CanvasRenderingContext2D.fillText()绘制标题。

  1. plugins: [{
  2. afterDraw: chart => {
  3. var ctx = chart.chart.ctx;
  4. ctx.save();
  5. ctx.textAlign = 'center';
  6. ctx.font = "18px Arial";
  7. ctx.fillStyle = "gray";
  8. ctx.fillText('My Title', chart.chart.width / 2, 20);
  9. ctx.restore();
  10. }
  11. }],

字符串
与此同时,你必须为你的图表定义顶部padding。这决定了你的标题和图表之间的空间(标题底部填充基本上)。

  1. layout: {
  2. padding: {
  3. top: 80
  4. }
  5. },


请看看下面的代码,显示它可能是什么样子。

  1. new Chart(document.getElementById('myChart'), {
  2. type: 'bar',
  3. plugins: [{
  4. afterDraw: chart => {
  5. var ctx = chart.chart.ctx;
  6. ctx.save();
  7. ctx.textAlign = 'center';
  8. ctx.font = "18px Arial";
  9. ctx.fillStyle = "gray";
  10. ctx.fillText('My Title', chart.chart.width / 2, 20);
  11. ctx.restore();
  12. }
  13. }],
  14. data: {
  15. labels: ['A', 'B', 'C', 'D'],
  16. datasets: [{
  17. data: [10, 12, 8, 6],
  18. backgroundColor: ['rgba(255, 99, 132, 0.2)', 'rgba(255, 159, 64, 0.2)', 'rgba(255, 205, 86, 0.2)', 'rgba(75, 192, 192, 0.2)'],
  19. borderColor: ['rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)'],
  20. borderWidth: 1
  21. }]
  22. },
  23. options: {
  24. layout: {
  25. padding: {
  26. top: 80
  27. }
  28. },
  29. legend: {
  30. display: false
  31. },
  32. scales: {
  33. yAxes: [{
  34. ticks: {
  35. beginAtZero: true
  36. }
  37. }]
  38. }
  39. }
  40. });
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
  2. <canvas id="myChart" height="100"></canvas>

的字符串

展开查看全部
omvjsjqw

omvjsjqw2#

您可以在options.legend对象下使用padding选项:

  1. options: {
  2. plugins: {
  3. title: {
  4. display: true,
  5. text: 'My Title',
  6. font: {
  7. size: 17,
  8. },
  9. padding: {
  10. top: 10,
  11. bottom: 30
  12. }
  13. }
  14. }
  15. }

字符串

展开查看全部

相关问题