g2plot 是一套简单、易用、并具备一定扩展能力和组合能力的统计图表库,基于图形语法理论搭建而成,”g2plot”中的 g2 即意指图形语法 (the Gramma of Graphics),同时也致敬了 ggplot2。
下面是一个简单的是用例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| <template> <div ref="chartRef"></div> </template>
<script setup> import { onMounted, ref, defineProps, toRefs } from 'vue'; import { Chart } from '@antv/g2';
const props = defineProps({ config: Object }) const { config } = toRefs(props)
const chartRef = ref();
const initChart = () => { const chart = new Chart({ ...config.value, container: chartRef.value, autoFit: true, forceFit: true, }) chart .title({ title: `月${window.CONFIG.systemName}分析`, }) .interval() .data({ type: 'fetch', value: '/api/hdfs/read-csv?path=/output/hdfsJobByMonth/part-r-00000', format: 'csv', autoType: true, transform: [ { type: 'map', callback: (val) => { val['年月'] = val['时间'] + '月'; return val; }, }, { type: 'sortBy', fields: ['时间'], }, { type: 'fold', fields: window.CONFIG.dataHeader, key: window.CONFIG.chartX, value: window.CONFIG.chartY, }, ],
}) .encode('x', '年月') .encode('y', window.CONFIG.chartY) .transform({ type: 'dodgeX' }) .encode('color', window.CONFIG.chartX)
chart.render(); return chart; }
onMounted(() => { console.log(chartRef.value) initChart() })
</script>
<style lang="scss" scoped>
</style>
|
其中需要注意的是: .encode(‘color’, window.CONFIG.chartX) 用来实现的是图例,图例的内容为 window.CONFIG.chartX ,其中color 可以进行变化
因为 prop 接受了主题的配置,所有的颜色都会根据主题的index.js进行变化
另外 fetch 通过拉取 hdfs 中算好的 csv 文件来获得值,里面的 transform 对值进行转换,其中 type fold 能生成一个 key value 的map