javascript - 调整大小时 Chart.js 模糊
问题描述
我想通过下拉菜单更改图表大小。
图表放置在 graphearea div 中。
<div class="grapharea" >
<canvas id="myChartA" class="myChart"></canvas>
</div>
“myChart”类的大小为 100%。因此,如果“graphearea”的大小发生变化,myChat 的大小也会发生变化。
“graphearea”的大小将被更改 columnSizeSet 函数,“.myChart”的大小将被重置。
function columnSizeSet() {
obj = document.setCol.sizeOfCol;
index = obj.selectedIndex;
width = obj.options[index].value;
console.log('width', width);
$('.grapharea').css('width', width);
$('.myChart').css('width','100%');
$('.myChart').css('height', '100%');
myChartA.update();
}
最后,更新了 myChartA。
但是,它不会像我想要的那样工作。
接下来,选择相对于浏览器宽度的图表大小。图表已调整大小,但图表模糊。
如果我改变浏览窗口的大小,它就会变得清晰。
为什么我改变尺寸时它从一开始就画得很漂亮?Chartjs 的画布有一个绘图缓冲区,上面的方式只是改变了缓冲区的大小。我猜想在调整窗口大小时缓冲区已被清除并重绘。
如何控制重绘?
我已经将它实现为 Chart.js 选项。
responsive: true,
maintainAspectRatio: true,
对重绘不起作用吗?
我在CODE Pen中有源代码。
解决方案
来自Chart.js 文档:
图表也可以通过修改容器大小以编程方式调整大小:
chart.canvas.parentNode.style.height = '128px'; chart.canvas.parentNode.style.width = '128px';
推荐阅读
- pytorch - 如何使用 pytorch-lightning 将模型权重保存到 mlflow 跟踪服务器?
- python - KeyError 访问嵌套字典中的数据
- heroku - 'heroku.pkg' 无法打开,因为 Apple 无法检查它是否存在恶意软件
- java - SpringBoot2.X如何解决CORS问题
- matlab - Webots 可以向 Simulink 发送实时数据吗?
- facebook - Facebook SDK 登录错误“此页面不可用”
- google-apps-script - 无法将自定义菜单添加到谷歌表格
- javascript - Next.js '在预渲染页面“/”时发生错误:错误:Minified React 错误 #321;' 在生产构建期间
- java - 函数式编程与 OOP
- java - Spring Boot 错误创建名称为“optionalLiveReloadServer”的 bean