Chart.js 对单个图表进行动态类型切换时显示错误解决方案

﹏ヽ暗。殇╰゛Y 2022-10-02 01:55 40阅读 0赞

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

假设第一步实例化了一个 线型 图标

  1. var charts = new Chart(document.getElementById("myChart").getContext('2d'), {
  2. type : 'bar',
  3. data : {
  4. labels : ['第1天' , '第2天' , '第3天' , 4天],
  5. datasets : [
  6. {
  7. label : "粉丝数",
  8. fill : false,
  9. backgroundColor: 'rgba(40,209,41,0.2)',
  10. borderColor : 'rgba(40,209,41,1)',
  11. data : [1 , 2 , 3 , 4],
  12. yAxisID : 'OD',
  13. borderWidth : 1,
  14. }
  15. ]
  16. },
  17. options: {
  18. scales: {
  19. yAxes: [{
  20. id : "OD",
  21. type : 'linear',
  22. ticks : {
  23. beginAtZero: true
  24. },
  25. gridLines: {
  26. drawOnChartArea: false
  27. }
  28. }
  29. ]
  30. }
  31. }
  32. });

第二步当你在通过click事件更改datasets.type值时,就会出现瞬移效果….具体请自行检验

  1. $('a').click(function(){
  2. charts.data.datasets[0].type = 'line';
  3. charts.update();
  4. })

解决办法:渲染新的图标之前,销毁掉旧的图表

  1. var charts = null;
  2. function render(){
  3. if(charts){
  4. charts.destroy();
  5. }
  6. charts = new Chart(document.getElementById("myChart").getContext('2d'), {
  7. type : 'bar',
  8. data : {
  9. labels : ['第1天' , '第2天' , '第3天' , 4天],
  10. datasets : [
  11. {
  12. label : "粉丝数",
  13. fill : false,
  14. backgroundColor: 'rgba(40,209,41,0.2)',
  15. borderColor : 'rgba(40,209,41,1)',
  16. data : [1 , 2 , 3 , 4],
  17. yAxisID : 'OD',
  18. borderWidth : 1,
  19. }
  20. ]
  21. },
  22. options: {
  23. scales: {
  24. yAxes: [{
  25. id : "OD",
  26. type : 'linear',
  27. ticks : {
  28. beginAtZero: true
  29. },
  30. gridLines: {
  31. drawOnChartArea: false
  32. }
  33. }
  34. ]
  35. }
  36. }
  37. });
  38. }
  39. render();

转载于:https://my.oschina.net/colinadmin/blog/3052581

发表评论

表情:
评论列表 (有 0 条评论,40人围观)

还没有评论,来说两句吧...

相关阅读