使用 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 创建气泡图 我能够创建描述每个气泡的工具提示 但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示 BubbleData 对象格式不包含标签元素 无论如何我都放了一个 不走运 我尝试过图表数据对象的 标签 元素
  • 当鼠标悬停时,Chartjs 显示标签和单位统计

    当我的鼠标指针悬停在图表上时是否可以显示标签和单位 目前只有数字 对于下面的例子 我想展示 58 标签1 0 标签2 0 标签3 0 标签4 0 标签5 我的选项如下所示 var options Boolean Show a backdro
  • Chartjs 在鼠标悬停时非常快速地调整大小(闪烁)

    我在基于引导的页面中有一个图表 我试图在页面调整大小时调整它的大小 以遵循响应式设计的变化 所以我有这段代码 function redrawChart var w chart container width var c document g
  • 如何进行复杂的查询? | ChartJS 和 Django

    我使用下面的 Chart JS 库创建了一个图表 我的 models py 下面 class Organization models Model name models CharField max length 250 unique Tru
  • 错误:“类别”不是注册规模

    我正在尝试从以下位置迁移 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 自定义混合图表的悬停工具提示时遇到了一些问题 我有一个条形图显示某种产品的总利润 还有一个折线图显示该某种产品的总量 当我将鼠标悬停在条形图上时 我希望工具提示显示如下内容 Total profit 1399
  • Chart.js 响应式条形图标签大小调整

    所以我有一个使用 Chart js 的条形图 并且启用了响应式功能 它似乎适用于某些图表 但不适用于其他图表 例如 我的条形图标签似乎没有随窗口调整大小 但其他所有内容都会使整个图表在较小的窗口尺寸下看起来非常奇怪 如何重新调整标签大小以使
  • ChartJS 如何设置X轴的最大标签?

    我从数组接收图表数据 其中存储了从 2016 年 1 月到 2018 年 12 月的日期 在图表中 它显示 3 年的所有月份 但我只需要展示1年 有任何想法吗 在这里 我传递一个数组并更改月份的单位 还有显示格式 chartHour con
  • 使用按钮在 Chart.js 中切换图表

    我是一名初学者开发人员 我一直在尝试使用 ChartJS 将一些数据显示到屏幕上 我希望能够单击一个按钮来生成另一组新的数据 轴 我一直在尝试遵循其他堆栈溢出答案 但似乎没有一个对我有用 请参见下文
  • 如何移动 Chart.js 饼图上的标签位置

    我正在使用 Chart js 并且尝试将饼图上的标签移到饼图区域之外 请参见红色 X 这是我现在的代码 div class container h4 class title Title h4 div
  • 使用捆绑(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
  • 如何更改 Angular-Chart.js 的颜色

    我使用 Angular Chart js AngularJSChart js http www chartjs org 版本 来创建条形图 图表正在使用除颜色之外的选项 即使我设置了它们 它也会显示在文档中 http jtblin gith
  • 未捕获的类型错误:无法读取未定义的属性“draw”

    for var i 0 i lt reduced length i var innerdata for var j 0 j lt days length j var rev 0 each reduced i data function ti
  • 使 Chart.js 在悬停时在散点图中的点之间呈现一条线

    我有一个包含两个数据集的简单散点图 active and passive const data datasets label Active sentences A1 A2 A3 data 0 4340433805869016 0 12813
  • Chart.js 刻度线和 X 轴之间的空间

    我正在使用 Chart js 版本 3 x 制作一个简单的画布 它只是显示价格的演变 X 轴用于时间 Y 轴用于进化百分比 我已经成功做到了这一点 但现在 我想添加一些风格 我的目标是在标记刻度和 X 轴之间添加一些空间 我用过chart
  • ChartJs:如何按时间值(而不是像素)以编程方式平移

    我使用的是chartJs 3 6 1 和 Chartjs plugin zoom 1 2 1 但我认为这并不重要 我有 2 个时间序列折线图 当我通过拖放平移一个图表时 我也想移动 平移另一个图表 为此 我为 graphA 启用了缩放 平移
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如
  • Chartjs + Angular6 未显示图表或任何错误

    我正在尝试以角度实现chart js 编写了一个简单的代码来在html上显示图表 但是页面上没有输出 也没有错误 我不明白问题出在哪里以及为什么显示图表失败 堆栈闪电战 https stackblitz com edit angularch
  • 如何将光标样式更改为悬停在图表点上的指针?

    我正在使用 Chart js v 2 库 当用户将鼠标悬停在图表点上时 我试图将光标样式更改为 指针 我将把它与条形图 饼图 折线图一起使用 看来charts js v 2 中应该支持这个选项 但我在任何地方都找不到例子 编辑 我没有提到我

随机推荐