chart.js基本知识——调整图表尺寸

  《chart.js使用学习 》最后提到测试过程中发现调用chart.js绘制的图表会自动充满父容器。如果canvas直接放在body标签下,则图标会充满整个页面,即便设置canvas的尺寸也没有用。
  参考文献1中介绍:

  当根据窗口大小更改图表大小时,主要的限制是画布渲染大小(canvas.width和.height)不能用相对值表示,与显示大小相反(canvas.style.width和.height)。此外,这些尺寸彼此独立,因此画布渲染尺寸不会根据显示尺寸自动调整,从而使渲染不准确。
  以下示例不起作用:
   <canvas height=“40vh” width=“80vw”>: 无效值,画布不调整大小 (示例)
   <canvas style=“height:40vh; width:80vw”>: 无效的行为,画布调整大小但变得模糊(example)

  为了调整图表大小,可以采用以下几种方式:

外嵌div标签

  将canvas置于div标签内,然后通过调整div元素的尺寸来控制图表的大小,示意程序及截图如下所示:

	<div style="height:30%;width:30%;">
        <canvas id="myChart" ></canvas>
    </div>     

在这里插入图片描述
  chart.js文档中建议使用单独的容器放置绘图用的canvas,然后通过设置容器的大小来调整图表大小。

配置responsive属性

  chart.js的全局配置中,在option命名空间下包含几个与尺寸相关的参数配置:

  • responsive:布尔值,默认值为true,用于设置图表所在canvas是否随其容器大小变化而变化;
  • maintainAspectRatio:布尔值,默认值为true,用于设置图表调整大小时是否保持最初的canvas宽高比;
  • aspectRatio:数值型,默认值为2,用于设置canvas的宽高比(值为1表示canvas是正方形),如果显示定义了canvas的高度,则此属性无效;
  • onResize:函数型,默认为null,图表尺寸变化时调用本函数,传入图表对象实例及新的尺寸;
  • resizeDelay:数值型,默认为0,表示毫秒数,用于设置图表尺寸延迟变化时间。

  在chart类的构造函数的option中设置responsive为false,然后就可以指定canvas尺寸了。

	 var barChart = new Chart(ctx, {
            type: 'line',
            data: data,
            options: {
                responsive:false
        		 }    
         });
通过编程方式设置图表尺寸

  chart.js还支持通过编程方式设置图表尺寸,示例代码如下(代码来自参考文献2):

chart.canvas.parentNode.style.height = '128px';
chart.canvas.parentNode.style.width = '128px';

[1]https://chartjs.bootcss.com/docs/
[2]https://www.chartjs.org/docs/latest/charts/line.html#line-styling

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤在Django项目中使用chart.js来绘制图表: 1. 在你的HTML文件中,首先确保你已经导入了chart.js文件。你可以使用`<script>`标签将其引入,如下所示: ```html <script src="/static/JS/chart/node_modules/chart.js/dist/chart.js"></script> ``` 请注意,这里的`/static/JS/chart/`路径应该根据你的项目目录结构进行相应的调整。 2. 接下来,你需要在HTML文件中创建一个用于显示图表的`<canvas>`元素。为了方便起见,给这个元素一个唯一的id,以便稍后在JavaScript代码中引用。例如: ```html <canvas id="myChart"></canvas> ``` 3. 在你的JavaScript文件中,使用以下代码来获取对`<canvas>`元素的引用,并通过Chart.js创建图表: ```javascript // 获取对canvas元素的引用 var ctx = document.getElementById('myChart').getContext('2d'); // 创建图表 var myChart = new Chart(ctx, { type: 'bar', // 设置图表类型,例如柱状图、折线图等 data: { labels: ['标签1', '标签2', '标签3'], // 图表的标签 datasets: [{ label: '数据集1', data: [10, 20, 30], // 数据集 backgroundColor: 'rgba(0, 123, 255, 0.5)', // 数据集的背景颜色 borderColor: 'rgba(0, 123, 255, 1)', // 数据集的边框颜色 borderWidth: 1 // 边框宽度 }] }, options: { // 设置图表的其他配置选项,例如标题、坐标轴等 } }); ``` 这是一个简单的示例,使用了柱状图类型和一个数据集。你可以根据需要自定义图表的类型、数据和其他选项。 确保你已经在正确的位置引入了chart.js文件并按照以上步骤进行操作,即可在HTML中使用chart.js绘制图表。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值