<script> var data = [{ type: '評估中', percent: 0.23 }, { type: '設計中', percent: 0.28 }, { type: '正在開發', percent: 0.30 }, { type: '已上線', percent: 0.19 }]; var sum = 500; var ds = new DataSet(); var dv = ds.createView().source(data); // transform 數據變換 dv.transform({ type: 'map', // type運算的方法名 callback: function callback(row) { row.value = parseInt(sum * row.percent); return row; } });
// 1、 創建 chart var chart = new G2.Chart({ container: 'mountNode', forceFit: true, height: window.innerHeight, padding: 'auto' }); // 2、 載入數據 chart.source(dv); // 提示信息 chart.tooltip(false); // 圖例 即右邊的表示信息 chart.legend({ position: 'right-center', offsetX: -100 }); // 坐標系 (設定 圖形位置) chart.coord('theta', { radius: 0.75, innerRadius: 0.6 }); // 3、 創建圖形語法 (x、y軸方向上 的各種屬性設置)
// chart.geom(“第一個 要創建的圖形”).attr(“圖形屬性映射,即圖形要設置的屬性在 后面一一打點調用”) chart.intervalStack().position('percent').color('type', ['#0a7aca', '#0a9afe', '#4cb9ff', '#8ed1ff']).opacity(1).label('percent', { offset: -18, textStyle: { fill: 'white', fontSize: 12, shadowBlur: 2, shadowColor: 'rgba(0, 0, 0, .45)' }, rotate: 0, autoRotate: false,
// formatter 格式化文本 formatter: function formatter(text, item) { return String(parseInt(item.point.percent * 100)) + '%'; } });
// 輔助文本 chart.guide().html({ position: ['50%', '50%'], html: '<div class="g2-guide-html"><p class="title">項目總計</p><p class="value">500</p></div>' });
// 圖表事件 chart.on('interval:mouseenter', function(ev) { var data = ev.data._origin; $(".g2-guide-html").css('opacity', 1); $(".g2-guide-html .title").text(data.type); $(".g2-guide-html .value").text(data.value); });
// 圖表事件 chart.on('interval:mouseleave', function() { $(".g2-guide-html .title").text('項目總計'); $(".g2-guide-html .value").text(500); });
// 3、 渲染圖形 chart.render(); </script>