label 文本标签
简介如何使用格式化文本自定义 html 文本使用统计函数简介恰当的文本标注可以提高可视化图表的可读性。除了提供文本标签标注的功能之外,G2 还支持文本的格式化以及自定义 html 文本标签的功能。
如何使用在每个几何标记 geom 上调用 label 方法,指定需要显示的数据维度即可:
// 指定显示文本标签chart.point().position('x*y').label('x');// 格式化文本标签的显示内容chart.interval().position('x*y').label('x', {offset: -16, // 文本距离图形的距离renderer: function(text, item, index) {// 配合 custom 为 true 使用,格式化文本的函数}});// 使用回调函数chart.polygon().position(Stat.treemap('children*value')).label('name*children', function(name, children) { // 仅显示没有子节点的名称if (!children) {return name;}}, {label: {fill: '#fff'}});
更多配置项请查看 label api。 格式化文本如果默认提供的 label 显示形式不满足需求时,可以在 label 中设置 renderer 属性,为其定义回调函数即可。
chart.interval().position('x*y').label('x', {renderer: function(text, item, index) {// text 为每条记录 x 属性的值// item 为映射后的每条数据记录,是一个对象,可以从里面获取你想要的数据信息// index 为每条记录的索引}});
完整代码如下:
var data = [{name: 'Microsoft Internet Explorer', value: 56.33 },{name: 'Chrome', value: 24.03},{name: 'Firefox', value: 10.38},{name: 'Safari', value: 4.77},{name: 'Opera', value: 0.91},{name: 'Proprietary or Undetectable', value: 0.2}];var Stat = G2.Stat;var chart = new G2.Chart({id: 'c1',width: 800,height: 400});chart.source(data);// 重要:绘制饼图时,必须声明 theta 坐标系chart.coord('theta', {radius: 0.8 // 设置饼图的大小});chart.legend('name', {position: 'bottom'});chart.intervalStack().position(Stat.summary.percent('value')).color('name').label('name', {renderer: function(text, item, index) {var point = item.point; // 每个弧度对应的点var percent = point['..percent']; // ..percent 字段由 Stat.summary.percent 统计函数生成percent = (percent * 100).toFixed(2) + '%';return text + ' ' + percent;}});chart.render();
自定义 html 文本
chart.interval().position(‘x*y’).label(‘x’, {custom: true,renderer: function(text, item, index) {// text 为每条记录 x 属性的值// item 为映射后的每条数据记录,是一个对象,可以从里面获取你想要的数据信息// index 为每条记录的索引}});
label 除了可以格式化文本的显示,也支持使用 html 自定义显示的样式。只需要将 custom 属性设置为 true, 并定义 renderer 格式化文本的回调函数即可,如下例所示: 完整代码:
// 格式化饼图文本function formatter(text, item) {var point = item.point; // 每个弧度对应的点var proportion = point['..proportion']; // ..proportion 字段由Stat.summary.proportion统计函数生成proportion = (proportion * 100).toFixed(2) + '%';return '' + text + '
+ point.color + '">' + proportion + ''; // 自定义 html 模板}$.getJSON('../../../../../static/data/diamond.json',function (data) {var Stat = G2.Stat;var chart = new G2.Chart({id: 'c2',width: 800,height: 400,plotCfg: {margin: [20, 90, 60, 80]}});chart.source(data);chart.coord('theta',{radius: 0.6});// 不同cut(切割工艺)所占的比例chart.intervalStack().position(Stat.summary.proportion()).color('cut').label('cut', {custom: true, // 使用自定义文本renderer: formatter, // 格式化文本的函数labelLine: false, // 不显示文本的连接线offset: 50 // 文本距离图形的距离});chart.render();});
使用统计函数label 方法同样支持统计函数嵌套,比如下图,Y 轴映射的是每个分类的总数,但是你又想标注每个分类的数据占总数据的比例,这个时候就可以直接在 label 中嵌套统计函数。
chart.interval().position('x*y').label(Stat.summary.percent('y')).color('x');
完整代码:
$.getJSON('../../../../../static/data/diamond.json',function (data) {var Stat = G2.Stat;var chart = new G2.Chart({id: 'c3',width: 800,height: 400,plotCfg: {margin: [40, 80, 80, 80]}});chart.source(data);chart.interval().position(Stat.summary.sum('cut*price')).color('cut').label(Stat.summary.percent('price'));chart.render();});
当前内容版权归 蚂蚁金服 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 蚂蚁金服 .上一篇:下一篇:<div class="
