首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dc.js:使用图像作为图例

dc.js:使用图像作为图例
EN

Stack Overflow用户
提问于 2017-12-24 10:48:22
回答 1查看 75关注 0票数 1

我希望使用图像(图标或svg),而不是饼图图例的默认矩形。在dc.js中可以这样做吗?

例如:

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-26 19:54:46

这个特性不是内置的,但它通常很容易“逃到d3”,并根据您的需要定制图表。

在这种情况下,我们希望等到图表呈现出来,然后用图像替换矩形:

代码语言:javascript
复制
chart.on('pretransition', function(chart) { // 1
   var items = chart.selectAll('.dc-legend .dc-legend-item'); // 2
   items.selectAll('rect').remove(); // 3
   var images = items.selectAll('image').data(function(x) { // 4
       return [x];
   });
   images.enter().append('image').attr({ // 5
       width: 25,
       height: 25,
       href: function(leg) { return _icons[leg.name]; }
   });
   console.log('items', items.data());
});
  1. 等待图表渲染/重绘
  2. 选择图例项
  3. 删除每一项下的任何rect (如果这是一个线状图,则必须查找line
  4. 选择任何现有的图像(返回单个项数组的“诀窍”是为了使我们能够干净地替换任何存在的图像,而不是继续添加更多的图像)。
  5. 并设置image --在本例中,我使用了在CDN上可以找到的第一个SVG图标;我们使用一个对象将堆栈名映射到SVG。

最后,我们还需要设置图例的项目高度以匹配图像高度:

代码语言:javascript
复制
chart.legend(dc.legend().itemHeight(25));

示例输出:

小提琴示例:https://jsfiddle.net/gordonwoodhull/Lss5wsz6/9/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47959923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档