一.echarts的折线图的使用demo如下,linecharts为实例化的封装组件,line为实际应用的组件

cnpm install echarts
import React from 'react';
import './lineCharts.less';
let echarts = require('echarts'); /**
* 组件参数配置
*
* @param {string} id
* id = 每个图标的标识
* @param {array} color
* color = 多组数据的颜色区分,第一组数据为第一种颜色
* @param { } legendShow
* legendShow 是否显示默认标注,右上角颜色对应块
* @param {string} legendTextStyle
* legendTextStyle = 折线图标注的文字颜色
* @param { } noPercent
* noPercent 折线图不是以百分比来显示
* @param { array } xAxis
* xAxis": ["翡翠城西南区", "盛世嘉园","西溪北苑"],
* @param { array } yAxis
* "yAxis": [
{
"data": [100,200,300],
"name": "水费",
"stack": "1",
"type": "line",
},
{
"data": [100,200,300],
"name": "物业管理费",
"stack": "1",
"type": "line",
},
{
"data": [100,200,300],
"name": "燃气费",
"stack": "1",
"type": "line",
}
]
*
*/ let colors = ['#f27573', '#69757a', '#ffd553', '#51b8ae', '#ff8d69', '#a48b82', '#dde779', '#7d89cd', '#cacaca', '#51d1e1', '#f06695', '#fff179', '#8ca8f9', '#c9b185', '#9e5c81']; class lineCharts extends React.Component {
constructor(props) {
super(props);
this.state = {};
} componentDidMount() {
let { id, xAxis, yAxis } = this.props;
let myChart = echarts.init(document.getElementById(id));
myChart.setOption({
color: this.props.color ? this.props.color : colors,
title: {
left: "center",
},
legend: {
orient: 'vertical',
left: 'right',
show: this.props.legendShow ? true : false,
textStyle: {
color: this.props.legendTextStyle ? this.props.legendTextStyle : '#000',
fontSize: 12
}
},
tooltip: {
trigger: 'axis',
formatter: this.props.noPercent ? '' : '{b0}<br />{a0}: {c0}%<br />{a1}: {c1}%'
},
grid: {
left: '20%',
right: '20%',
bottom: '3%',
top:'30%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: xAxis,
"axisLabel": {
interval: this.props.intervalNum ? this.props.intervalNum : 0,
rotate: 7
},
axisLine: {
lineStyle: {
color: this.props.lineColor ? this.props.lineColor : '#000',
}
},
},
yAxis: {
type: 'value',
minInterval: 1,
boundaryGap: [0, 0.1],
axisLabel: {
formatter: this.props.noPercent ? '{value}' : '{value} %',
},
axisLine: {
lineStyle: {
color: this.props.lineColor ? this.props.lineColor : '#000',
}
},
precision: 0,
// min: 1,
max: this.props.maxSize && this.props.maxSize <= 10 ? 10 : null,
},
series: yAxis
})
} render() {
return (
<div id={this.props.id} className="charts"> </div>
);
} } export default lineCharts;
import React, { Component } from 'react'
import { Button } from 'antd';
import LineCharts from "./lineCharts";
import './lineCharts.less'; class Line extends Component { render() {
const data = {
"xAxis": ["翡翠城西南区", "盛世嘉园","西溪北苑"],
"yAxis": [
{
"data": [100,200,300],
"name": "水费",
"stack": "1",
"type": "line",
"areaStyle": {}
},
{
"data": [100,200,300],
"name": "物业管理费",
"stack": "2",
"type": "line",
"areaStyle":{}
},
{
"data": [100,200,300],
"name": "燃气费",
"stack": "3",
"type": "line",
"areaStyle":{}
}
]
}
return (
<div className="root">
<Button className="big">这是一个按钮</Button>
<LineCharts id="lineCharts-1" color={['#f38747', '#f7dc3e', '#6ed66d']} legendShow legendTextStyle="#5d71a2" noPercent maxSize={100} lineColor="#5d71a2" xAxis={data.xAxis} yAxis={data.yAxis} />
</div>
);
}
} export default Line

二.g2的使用以如下柱状图为例

cnpm install @antv/g2
import React from 'react';
import G2 from '@antv/g2'; class g2 extends React.Component {
constructor(props) {
super(props);
this.state = {
data :[
{ genre: 'Sports', sold: 275 },
{ genre: 'Strategy', sold: 115 },
{ genre: 'Action', sold: 120 },
{ genre: 'Shooter', sold: 350 },
{ genre: 'Other', sold: 150 }
]
};
} componentDidMount() {
const chart = new G2.Chart({
container: 'c1', // 指定图表容器 ID
width: 600, // 指定图表宽度
height: 300 // 指定图表高度
});
chart.source(this.state.data);
chart.interval().position('genre*sold').color('genre');
chart.render();
}
render() {
return (
<div id="c1" className="charts"> </div>
);
} } export default g2;

三:bizcharts:基于g2的封装版本,去除实例化图表的步骤,更多的关注于各字段的控制,以下两个demo分别为折线图,扇形图

cnpm install bizcharts;
cnpm install @antv/data-set;//扇形图时要安装改依赖
import React from 'react';
import ReactDOM from 'react-dom';
import { Chart, Geom, Axis, Tooltip, Legend, Coord } from 'bizcharts'; class bizcharts extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{ genre: 'Sports', sold: 275, income: 2300 },
{ genre: 'Strategy', sold: 115, income: 667 },
{ genre: 'Action', sold: 120, income: 982 },
{ genre: 'Shooter', sold: 350, income: 5271 },
{ genre: 'Other', sold: 150, income: 3710 }
],
};
} render() {
return (
<div>
<Chart width={600} height={200} padding={[60,'auto','auto',160]} data={this.state.data} >
<Axis name="genre" />
<Legend position="bottom"/>
<Tooltip />
<Geom type="line" position="genre*sold" size={2} />
<Geom type='point' position="genre*sold" size={4} shape={'circle'} style={{ stroke: '#fff', lineWidth: 1 }} />
</Chart>
</div>
);
} } export default bizcharts;
import React from 'react';
import ReactDOM from 'react-dom';
import { Chart, Geom, Axis, Tooltip, Legend, Coord, Label } from 'bizcharts';
import DataSet from '@antv/data-set';//cnpm install @antv/data-set
const { DataView } = DataSet;
const dv = new DataView(); class bizcharts extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{ item: '事例一', count: 40 },
{ item: '事例二', count: 21 },
{ item: '事例三', count: 17 },
{ item: '事例四', count: 13 },
{ item: '事例五', count: 9 }
],
};
} render() {
dv.source(this.state.data).transform({
type: 'percent',
field: 'count',
dimension: 'item',
as: 'percent',
});
const cols = {
percent: {
formatter: val => {
val = (val * 100) + '%';
return val;
}
}
}
return (
<div>
<Chart height={window.innerHeight} data={dv} scale={cols} padding={[80, 100, 80, 80]} forceFit>
<Coord type='theta' radius={0.75} />
<Axis name="percent" />
<Legend position='right' offsetY={-window.innerHeight / 2 + 120} offsetX={-100} />
<Tooltip
showTitle={false}
itemTpl='<li><span style="" class="g2-tooltip-marker"></span>{name}: {value}</li>'
/>
<Geom
type="intervalStack"
position="percent"
color='item'
tooltip={['item*percent', (item, percent) => {
percent = percent * 100 + '%';
return {
name: item,
value: percent
};
}]}
style={{ lineWidth: 1, stroke: '#fff' }}
>
<Label content='percent' formatter={(val, item) => {
return item.point.item + ': ' + val;
}} />
</Geom>
</Chart>
</div>
);
} } export default bizcharts;

react+echarts/g2/bizcharts可视化图表的更多相关文章

  1. 三大图表库:ECharts 、 BizCharts 和 G2,该如何选择?

    最近阿里正式开源的BizCharts图表库基于React技术栈,各个图表项皆采用了组件的形式,贴近React的使用特点.同时BizCharts基于G2进行封装,Bizcharts也继承了G2相关特性. ...

  2. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  3. JFreeChart与AJAX+JSON+ECharts两种处理方式生成热词统计可视化图表

    本篇的思想:对HDFS获取的数据进行两种不同的可视化图表处理方式.第一种JFreeChar可视化处理生成图片文件查看.第二种AJAX+JSON+ECharts实现可视化图表,并呈现于浏览器上.   对 ...

  4. G2( bizCharts ) React 绘制混合图例

    G2( bizCharts ) React 绘制混合图例, // data-set 可以按需引入,除此之外不要引入别的包 import React from 'react'; import { Cha ...

  5. vue可视化图表 基于Echarts封装好的v-charts简介

    **vue可视化图表 基于Echarts封装好的v-charts** 近期公司又一个新的需求,要做一个订单和销售额统计的项目,需要用到可视化图表来更直观的展示数据.首先我想到的是Echarts,众所周 ...

  6. 数据可视化图表ECharts

    介绍: ECharts是一个基于ZRender(轻量级Canvas类库)的纯javascript图表库,提供可交互.个性化的数据可视化图表. ECharts提供了折线图.柱状图.散点图.饼图.K线图, ...

  7. ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表

    ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...

  8. echarts.js--前端可视化数据图形

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上, 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等 ...

  9. ECharts JS应用:图表页面实现

    因为要统计数据进行图表展示,所以就简单学习了 ECharts JS 的应用.它是一个纯Javascript图库,它依赖于一个轻量级的Canvas库 ZRender,并提供直观.生动.交互式和高度可定制 ...

随机推荐

  1. 【架构】Nginx如何设置X-Request-ID请求头,记录请求时间:毫秒?

    Nginx is awesome, but it’s missing some common features. For instance, a common thing to add to acce ...

  2. Struts2的动态Action实现

    源自:Struts2的动态Action实现 在Struts2中动态方法调用有三种方式. 一.指定method属性在struts.xml中指定action的method属性. <package n ...

  3. 【树莓派】Box相关手册-4 Web代理

    在盒子上安装配置web代理,通过此代理,用户访问盒子的内网地址实现web portal访问.目前我们使用tinyproxy作为web代理 安装: >sudo apt-get install ti ...

  4. websphere中的会话超时设置 和 web应用中web.xml中session-timeout关系

    Tomcat默认的会话的超时时间设置 设置Tomcat session有效期的三种方式有: 1.在tomcat/conf/web.xml中修改session-timeout的值,该设置是TOMCAT全 ...

  5. 算法笔记_048:找零问题(Java)

    目录 1 问题描述 2 解决方案 2.1 动态规划法   1 问题描述 现需找零金额为n,则最少需要用多少面值为d1 < d2 < d3 < ... < dm的硬币?(PS:假 ...

  6. python——修饰符

    修饰符基础--闭包 什么是闭包呢?标准的概念大家可以看wikipedia上的解释 举个例子: def do_add(base): def add(increase): return base + in ...

  7. Building Vim from source(转)

    Compiling Vim from source is actually not that difficult. Here's what you should do: First, install ...

  8. ROC

    # -*- coding: utf-8 -*- # __author__ = "JieYao" from biocluster.agent import Agent from bi ...

  9. python生成.exe

    python生成.exe 1.在Anaconda Prompt终端输入pip install pyinstaller 2.输入python -m pip install pypiwin32 pytho ...

  10. 广告系统的smart pricing是什么

    smart pricing这个词来源于google的Adwords系统,指的是系统能够根据流量质量对流量方的收入进行打折,为的是让广告主获得更高的ROI(投资回报率).将smart pricing的使 ...