使用 Chartjs 显示混合类型的图例(条形图和线条)

2023-12-24

我使用以下方法制作了堆叠组条形图Chartjs与线数据集混合:

我想区分第一项的图例Productivité通过将其渲染为一条线(而不是显示为矩形)。

我经历了图例文档 http://www.chartjs.org/docs/latest/configuration/legend.html但无法找到如何实现我正在寻找的东西。


我认为唯一的方法是自定义图例(参见http://www.chartjs.org/docs/latest/configuration/legend.html#html-legends http://www.chartjs.org/docs/latest/configuration/legend.html#html-legends).

下面是一个例子:

var ctx = document.getElementById('myChart');
var config = {
	type: 'bar',
  options: {
    legendCallback: function(chart) {
      var text = [];
      text.push('<ul class="' + chart.id + '-legend">');
      var data = chart.data;
      var datasets = data.datasets;
      if (datasets.length) {
        for (var i = 0; i < datasets.length; ++i) {
        	text.push('<li>');
        	if (datasets[i].type=='line') {
          	text.push('<span class="'+datasets[i].type+'" style="background-color:' + datasets[i].backgroundColor + '"></span>');
          } else {
          	text.push('<span class="'+datasets[i].type+'" style="background-color:' + datasets[i].backgroundColor + '"></span>');
          }
          text.push(datasets[i].label);
          text.push('</li>');
        }
      }
      text.push('</ul>');
      return text.join('');
    },
    legend: {
      display: false,
    },
    scales: {
      xAxes: [{
        type: "category",
        id: "axis-bar",
      }, {
        type: "time",
        id: "axis-time",
        display: false,
      }, ],
    },
  },
  data: {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
    datasets: [{
      label: "my dataset 1",
      type: "line",
      backgroundColor: "#0000FF",
      borderColor: "#0000FF",
      borderWidth: 1,
      fill: false,
      xAxisID: "axis-time",
      data: [{x:1*3600,y:2124},{x:1.5*3600,y:12124},{x:2*3600,y:1636},{x:2.5*3600,y:11636},{x:3*3600,y:1057},{x:3.5*3600,y:11057},{x:4*3600,y:9433},{x:4.5*3600,y:19433},{x:5*3600,y:4512},{x:5.5*3600,y:4512},{x:6*3600,y:3581},{x:6.5*3600,y:3581},{x:7*3600,y:53},{x:7.5*3600,y:53},]
    },{
      label: "my dataset 2",
      type: "bar",
      backgroundColor: "#ff0000",
      borderColor: "#ff0000",
      borderWidth: 1,
      fill: true,
      xAxisID: "axis-bar",
      data: [21242, 16360, 10577, 94337, 45312, 35581, 53]
    }]
  },

};

var myChart = new Chart(ctx, config);
var legend = myChart.generateLegend();
document.getElementById("legend").innerHTML = legend;
body {
  font-family: 'Arial';
}

.container {
  margin: 15px auto;
}

#chart {
  float: left;
  width: 70%;
}

#legend {
  float: right;
}

[class$="-legend"] {
  list-style: none;
  cursor: pointer;
  padding-left: 0;
}

[class$="-legend"] li {
  display: block;
  padding: 0 5px;
}

[class$="-legend"] li.hidden {
  text-decoration: line-through;
}

[class$="-legend"] li span {
  display: inline-block;
  margin-right: 10px;
  width: 20px;
}

[class$="-legend"] li span.bar {
  height: 10px;
}

[class$="-legend"] li span.line {
  height: 1px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.bundle.min.js"></script>
<div id="legend"></div>
<canvas id="myChart" width="400" height="200"></canvas>

或这里的jsfiddle:https://jsfiddle.net/beaver71/g7oz0noe/ https://jsfiddle.net/beaver71/g7oz0noe/


P.S.:如果您还需要图例单击处理程序,您可以轻松添加它们,请参阅以下小提琴示例:https://jsfiddle.net/beaver71/b5hdn9gw/ https://jsfiddle.net/beaver71/b5hdn9gw/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Chartjs 显示混合类型的图例(条形图和线条) 的相关文章

  • Chartjs 示例无法重现

    我希望从 Chartjs 文档中重现此示例的结果 https www chartjs org docs latest samples scales time line html https www chartjs org docs late
  • ChartJS:图表不显示所有数据

    由于某种原因 该图表没有显示数组中的最后两个数据 var data labels Brasil Argentina Chile Paraguai Peru Bol via M xico datasets data 9 19 7 77 6 8
  • 条形图中每个条形有不同的颜色;图表JS

    我在我正在开发的项目中使用 ChartJS 并且我需要为条形图中的每个条形使用不同的颜色 以下是条形图数据集的示例 var barChartData labels 001 002 003 004 005 006 007 datasets l
  • 错误:“类别”不是注册规模

    我正在尝试从以下位置迁移 Chart js2 9 3 to 3 3 0即使在应用更改之后 https www chartjs org docs latest getting started v3 migration html https w
  • 无法读取未定义的属性“标签”

    我刚刚学习 Chart js 的工作原理 因此我直接使用了 Chart js API 页面上的示例代码 但它似乎不起作用 我将以下代码放入脚本标记中 并收到 无法读取未定义的属性 标签 错误 不确定这个错误意味着什么 function va
  • 使用捆绑(CDN)chartjs-adapter-date-fns.bundle.min.js 配置区域设置?

    我在客户端 HTML 中使用 Chart js 和 date fns 适配器 https github com chartjs chartjs adapter date fns https github com chartjs chartj
  • vue.js vue-chartjs 图表在更换、更新图表数据等时不会更新

    我正在尝试使用 vue chartjs 制作 vue 我已遵循所有有关在更新 ChartData 属性时重新渲染图表的相关文档 我的图表只会在调整浏览器窗口大小后更新 我的parenttestchart vue 文件
  • Chart.js 将标签变成链接

    我不确定如果不做以下事情是否可能 在 HTML 画布中创建链接 https stackoverflow com questions 6215841 create links in html canvas但让我们确定一下 有没有一种方法 相对
  • Chart.js 中具有线性时间刻度的折线图

    我正在尝试使用Chart js 3 3 2 https www chartjs org docs latest 显示一些具有等距 x 日期轴的折线图 就像他们给出的例子一样here https www chartjs org docs la
  • 使 Chart.js 在悬停时在散点图中的点之间呈现一条线

    我有一个包含两个数据集的简单散点图 active and passive const data datasets label Active sentences A1 A2 A3 data 0 4340433805869016 0 12813
  • Chart.js 更改图例切换行为

    我有一个来自 Chart js 的雷达图 目前 它加载了所有效果很好的数据 并且支持图例的行为是通过单击图例标签来关闭与图例相关的数据 我希望能够单击图例标签 然后关闭所有其他标签 并可能引入 全部 选项 这对于 Chart js 可行吗
  • 为什么 Chart.js 画布不考虑容器元素的填充?

    我将 Chart js 与简单的折线图一起使用 但 Chart js 计算的宽度和高度属性似乎基于父元素的总宽度和高度 忽略填充 var options maintainAspectRatio false responsive true v
  • 向 ChartJS 数据点添加逗号

    我需要在 ChartJS 图表中的数字中添加逗号 前任 数据点可能是 1032 05 4334 75 8482 46 我需要它显示为 1 032 05 4 334 75 8 482 46 以下是包含当前代码的开发网站的链接 投资计算器 ww
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • vue-chartjs 反应数据错误

    我正在尝试使用反应式数据混合vue chartjs http vue chartjs org home id reactive data 用于设置初始数据的已安装函数正在运行 我可以使用 API 响应正确查看图表 fetchSessionT
  • Chart.js 点击标签,使用条形图

    我需要有关 Chart js 交互性的帮助 当我单击标签时 我需要返回我单击的列 索引 号 我尝试使用 getElementsAtEvent 但只有当我直接单击图表时它才有效 This http jsfiddle net yxz2sjam
  • Chart.js,设置最大值

    我正在制作雷达图Chart js 但它只会变得与其中的最大值一样大 我希望将其设置为标准最大值 因此范围是 0 到 100 您可以看到您在不同主题上的进度如何 有谁知道如何设置雷达图的最大范围值Chart js 我尝试添加一个设置为 100
  • 可以用vue-chartjs打印图表吗?

    我正在使用 vue chartjs 在网络应用程序上渲染图表 我知道如果您使用原始版本 您可以打印图表library https canvasjs com docs charts methods chart print 但是我不知道如何使用
  • 如何在 yAxis Chartjs 中的两条线之间添加背景颜色

    我如何在chartjs中Y轴的两条线之间添加背景颜色 如果你检查了这个数字 我需要能够做这样的事情 在两条线之间设置颜色 第一个是橙色 然后是蓝色或其他颜色 我检查了官方文档 但没有找到任何内容 这也是我的图表配置 this options
  • 在 Y 轴上显示时间 - 气泡图

    我碰到Bubble Chart 最新补充 在ng2 图表 https valor software com ng2 charts 我试图根据 Y 轴的时间和 X 轴的值显示数据 我的数据就像 x 10 35 60 和 y 7 00 AM 和

随机推荐