G2 绘制混合图例 demo
import G2 from '@antv/g2'; import DataSet from '@antv/data-set'; // G2 对数据源格式的要求,仅仅是 JSON 数组,数组的每个元素是一个标准 JSON 对象。 const data = [ { label: '0.1', 放款应还本金: 2800, 价格: 2800, 收益: 2260, 总收益率: 2 }, { label: '0.2', 放款应还本金: 1800, 价格: 1800, 收益: 1300, 总收益率: 3 }, { label: '0.3', 放款应还本金: 950, 价格: 950, 收益: 900, 总收益率: 5 }, { label: '0.4', 放款应还本金: 500, 价格: 500, 收益: -390, 总收益率: 1 }, { label: '0.5', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, { label: '0.6', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, { label: '0.7', 放款应还本金: 170, 价格: 170, 收益: -100, 总收益率: 3 }, { label: '0.8', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, { label: '0.9', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, { label: '1.0', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, { label: '未评分', 放款应还本金: 170, 价格: 170, 收益: 100, 总收益率: 3 }, ]; const ds = new DataSet(); const dv = ds.createView().source(data); dv.transform({ type: 'fold', fields: ['放款应还本金', '价格', '收益'], // 展开字段集 key: 'type', // key字段 value: 'value', // value字段 }) const dv1 = ds.createView().source(data); dv1.transform({ // 附加一个字段类型 type: 'map', callback(row) { // 加工数据后返回新的一行,默认返回行数据本身 row.rateType = 'a'; return row; } }); // Step 1: 创建 Chart 对象 const chart = new G2.Chart({ container: 'mountNode', // 指定图表容器 ID height: 300, // 指定图表高度 forceFit: true, animate: false }); chart.legend({ allowAllCanceled: true }) const view1 = chart.view(); view1.source(dv); // Step 3:创建图形语法,绘制柱状图,由 genre 和 sold 两个属性决定图形位置,genre 映射至 x 轴,sold 映射至 y 轴 view1.interval() .position('label*value') .color('type', ['#2b6cbb','#41a2fc','#54ca76']) .label('value') .adjust('dodge'); const view2= chart.view(); view2.axis('总收益率', { position: 'right', grid: null }); view2.source(dv1); view2.line().position('label*总收益率').color('rateType', '#fad248').label('总收益率'); // Step 4: 渲染图表 chart.render();