设置宽度和高度

Fel*_*ger 54 chart.js

我正在尝试在文档中给出的Chart.js的示例代码.

宽度和高度在canvas元素上以400px/400px内联指定.

但是当渲染图表时,它会被炸成整页宽度,并切断最右端.

见例子

我应该如何/在哪里控制图表的宽度/高度?

This is some bogus text because SO prohibits linking to Codepen otherwise.
Run Code Online (Sandbox Code Playgroud)

KpT*_*tor 65

你可以覆盖画布样式宽度!important ...

canvas{

  width:1000px !important;
  height:600px !important;

}
Run Code Online (Sandbox Code Playgroud)

responsive:true,在选项下指定属性..

options: {
    responsive: true,
    maintainAspectRatio: false,
    scales: {
        yAxes: [{
            ticks: {
                beginAtZero:true
            }
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

更新选项下的更新: maintainAspectRatio: false,

链接:http://codepen.io/theConstructor/pen/KMpqvo

  • 谢谢,你的`maintainAspectRatio:false`使图表可见.但仍然切断了右侧.用他们自己的基本示例代码来解决这些问题让我感到奇怪,图表是一个不错的选择.(右侧仍被切断......) (8认同)
  • 事实证明,您需要关闭响应以使图表服从给定的大小.遗憾的是,似乎无法控制它并保持响应性...... (5认同)
  • 使用“!important”并不是解决这个问题的正确方法,尽管它有效。@Nicolas 下面的解决方案“将画布包裹在 div 中”是一种更好的方法,因为我们可以按照我们想要的方式控制调整画布的大小。 (2认同)

小智 27

您也可以简单地用容器包围图表(根据官方文档http://www.chartjs.org/docs/latest/general/responsive.html#important-note)

<div class="chart-container">
    <canvas id="myCanvas"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.chart-container {
    width: 1000px;
    height:600px
}
Run Code Online (Sandbox Code Playgroud)

和选项

responsive:true
maintainAspectRatio: false
Run Code Online (Sandbox Code Playgroud)

  • 这有效。这里的关键是使用外部 div 并在其上设置宽度和高度,而不是画布元素。 (2认同)

Ant*_*ony 12

在我的情况下,通过responsive: false选项解决了问题.我不确定为什么每个人都告诉你做相反的事情,特别是因为默认是真的.


R. *_*ung 6

我不敢相信没有人谈论过使用相对父元素。

代码:

<div class="chart-container" style="position: relative; height:40vh; width:80vw">
  <canvas id="chart"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

资料来源:官方文档


小智 5

aspectRatio您可以根据您的需要更改:

options:{
     aspectRatio:4 //(width/height)
}
Run Code Online (Sandbox Code Playgroud)

  • 你能解释一下这是如何工作的吗?“4”不是纵横比。您的评论说“(宽度/高度)”,但不清楚如何应用它。有没有办法将其作为一组传递?或者您的字面意思是用建议的宽度除以建议的高度,例如 3:4 变成“0.75”? (2认同)