ChartJS 如何用同一标签管理线、散点图?

iqxoj9l9  于 2023-03-08  发布在  Chart.js
关注(0)|答案(1)|浏览(191)

我是React图2的新手

这是我的情节。有相同的标签,如因子5因子5因子6因子6...
我想做的是同时打开/关闭绘图。当我禁用因子5时,那么点和线将被禁用。但现在我必须彼此点击。
我该怎么办?这是我的密码。

  1. function createChart4() {
  2. let result = Object.assign([], resultScatter);
  3. let result2 = Object.assign([], resultData);
  4. let columns = Object.keys(resultScatter[0]).filter(el => el !== "Y");
  5. const colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#17becf"
  6. "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22"];
  7. let x=[];
  8. for (let i=0; i<columns.length; i++){
  9. x[i] = result.map((data) => data[columns[i]]);
  10. }
  11. let y = result.map((data) => data.Y);
  12. let scatterData = {
  13. datasets:[],
  14. };
  15. for (let i = 0; i < columns.length; i++) {
  16. let color = colors[i];
  17. let label = columns[i];
  18. let lines = result2.filter(el => el.FACTOR_CD === transLangKey(columns[i]))[0];
  19. let minX = Math.min(...x[i]);
  20. let maxX = Math.max(...x[i]);
  21. scatterData.datasets.push({
  22. label: label,
  23. data: x[i].map((val, index) => ({x: val, y: y[index]})),
  24. backgroundColor: color,
  25. borderColor: color,
  26. hidden: i !== 0,
  27. showLine: false,
  28. },
  29. {
  30. label: label,
  31. showLine: true,
  32. data: [{x: minX, y: lines.REG_COEF * minX + lines.CONSTANT},
  33. {x: maxX*1.05, y: lines.REG_COEF * maxX*1.05 + lines.CONSTANT},
  34. ],
  35. backgroundColor: color,
  36. borderColor: color,
  37. hidden: i !== 0,
  38. });
  39. }
  40. setChart4Data(scatterData);
  41. }

当我点击一个标签,点和线被禁用或可视化在同一时间。

7fyelxc5

7fyelxc51#

  1. setChartPlugin({
  2. title: {
  3. display: false
  4. },
  5. legend: {
  6. labels: {
  7. filter: function(legendItem, chartData) {
  8. if (legendItem.datasetIndex === 0) {
  9. return true;
  10. }
  11. return false;
  12. }
  13. },
  14. onClick: function(e, legendItem, legend){
  15. const index = legendItem.datasetIndex;
  16. const ci = legend.chart;
  17. if (ci.isDatasetVisible(index)) {
  18. ci.hide(index);
  19. ci.hide(index+1);
  20. legendItem.hidden = true;
  21. } else {
  22. ci.show(index);
  23. ci.show(index+1);
  24. legendItem.hidden = false;
  25. }
  26. }
  27. },
  28. });

在图表插件中添加此代码块。它工作。

展开查看全部

相关问题