English | 简体中文 | 🤖 AI Doc
三行代码画出echarts图表。 基于 echarts-for-react
🌈 使用简单,并提供默认布局、配色和样式
🌟 目前支持图表: <Bar />
<Line />
<Pie />
<Stack />
<Scatter />
<Wordcloud />
<BarHorizontal />
<Table />
🎁 支持对比维度
。 (对比维度:比如画出每个城市
在每月
的收入
对比增长曲线。其中城市
就是对比维度。)
💪 支持Typescript,类型安全
👉 完整安装
npm install -- save echarts - readymade
或者
yarn add echarts - readymade
👉 按需安装
npm install -- save @echarts - readymade / core
npm install -- save @echarts - readymade / line
或者
yarn add @echarts - readymade / core
yarn add @echarts - readymade / line
很明显,按需安装
将有利于缩小打包尺寸;
如果你选择按需安装
,你将需要手动传递ChartContext
到每个图表组件;
如果你选择完整安装
,无需手动显式传递ChartContext
;
为了减少打包尺寸,我将组件整体按照图表类型拆分到各个独立的包中。这样,如果只需要折线图,则只需要引入@echarts-readymade/core
和@echarts-readymade/line
即可。但这样处理之后,从@echarts-readymade/core
导出的ChartContext
就无法与其他图表共享,所以需要用户手动传递到每个图表组件的context中。可以查看这个 例子 。
对于 <Bar />
、 <Line />
和 <Scatter />
这三个组件,都会引入彼此
我认为每个图表组件都应该尽量引入较少的图表类型,来降低组件的包大小。比如饼图,我只需从echarts-for-react中引入饼图组件。但在某些场景下,用户在一张图上可能需要同时使用多种类型的图表。比如,用户可能要在散点图上用折线图画弥合曲线。因此,对于散点图,我也加入了折线图和柱状图的支持。(另一种比较好的做法可能是,开放一个可传入所需组件的配置属性来实现)
import { ChartProvider , Bar } from 'echarts-readymade'
const data = [
{
v6 : 0.8141021277904137 ,
d1 : '2020-12-31' ,
d2 : '北京' ,
v4 : 50.028318723339325 ,
v5 : 27.577454409512264
} ,
{
v6 : 0.3141021277904137 ,
d1 : '2020-12-31' ,
d2 : '上海' ,
v4 : 60.028318723339325 ,
v5 : 47.577454409512264
}
]
const dimension : Field [ ] = [
{
fieldKey : 'd1' ,
fieldName : '日期'
}
]
const valueList : Field [ ] = [
{
fieldKey : 'v6' ,
fieldName : '占比1' ,
isPercent : true
} ,
{
fieldKey : 'v4' ,
fieldName : '占比2'
} ,
{
fieldKey : 'v5' ,
fieldName : '占比3'
}
]
< ChartProvider data = { data} >
< Bar dimension = { dimension } valueList = { valueList } />
< / ChartProvider>
import { ChartProvider , ChartContext } from '@echarts-readymade/core'
import { Bar } from '@echarts-readymade/bar'
const data = [
{
v6 : 0.8141021277904137 ,
d1 : '2020-12-31' ,
d2 : '北京' ,
v4 : 50.028318723339325 ,
v5 : 27.577454409512264
} ,
{
v6 : 0.3141021277904137 ,
d1 : '2020-12-31' ,
d2 : '上海' ,
v4 : 60.028318723339325 ,
v5 : 47.577454409512264
}
]
const dimension : Field [ ] = [
{
fieldKey : 'd1' ,
fieldName : '日期'
}
]
const valueList : Field [ ] = [
{
fieldKey : 'v6' ,
fieldName : '占比1' ,
isPercent : true
} ,
{
fieldKey : 'v4' ,
fieldName : '占比2'
} ,
{
fieldKey : 'v5' ,
fieldName : '占比3'
}
]
< ChartProvider data = { data} >
< Bar
// Note: here you need pass context down
context = { ChartContext }
dimension = { dimension }
valueList = { valueList }
/>
< / ChartProvider>
🪄 完成!
属性
描述
类型
默认值
data
图表数据
any[]
undefined
echartsOptions
echarts-for-react
的配置属性
EChartsReactProps
undefined
每个图表的基础Props类型
属性
描述
类型
默认值
context
对于按需安装
,需要手动传递的ChartContext
,从@echarts-readymade/core
导出。如果是完整安装
可忽略
typeof ChartContext
undefined
(需要)
dimension
维度字段
Field[]
undefined
compareDimension
对比维度字段
Field[]
undefined
valueList
数值字段
Field[]
undefined
echartsSeries
echarts的series字段
any[]
undefined
setOption
可对应设置echarts的option,优先级最高。
(option: EChartsOption) => EChartsOption
undefined
属性
描述
类型
默认值
fieldKey
data
中的key
string
undefined
(需要)
fieldName
data
中的key
string
undefined
(需要)
type
图表类型
'line' | 'bar' | 'pie' | 'scatter'
undefined
yAxisIndex
数值显示在哪个Y轴
number
undefined
isPercent
百分比字段,如果设置true
,值将自动乘以100
boolean
undefined
decimalLength
保留小数位数
number
undefined
属性
描述
类型
默认值
xAxisData
X轴数据数组
any[]
undefined
legendPosition
图例位置
'top' | 'left' | 'right' | 'bottom'
undefined
属性
描述
类型
默认值
showInRing
是否是环形图
boolean
undefined
legendPosition
图例位置
'top' | 'left' | 'right' | 'bottom'
undefined
属性
描述
类型
默认值
legendPosition
图例位置
'top' | 'left' | 'right' | 'bottom'
undefined
属性
描述
类型
默认值
xAxisData
X轴数据数组
any[]
undefined
legendPosition
图例位置
'top' | 'left' | 'right' | 'bottom'
undefined
isPercentMode
是否是百分比模式,如果设置为true
,则Y轴最大值为100
boolean
undefined
isLineStack
是否是折现堆积图
boolean
undefined
基于 wordcloud2.js
属性
描述
类型
默认值
colorList
词云颜色数组
string[]
undefined
fontSizeMode
词云文字大小设置模式 bySort
-按照排序设置大小;byValue
-按照词的数值(如:词频)设置字体大小
'bySort' | 'byValue'
undefined
shape
词云形状
'mask-joy' | 'mask-great' | 'mask-bad' | 'mask-oval' | 'mask-rect' | 'mask-cloud' | 'mask-circle' | 'mask-diamond'
Or image string from import
undefined
wordcloudOptions
wordcloud2.js
配置
WordcloudOptions
undefined
setWordcloudOption
可设置处理后的list数据
<T>(list: any[]) => T[]
undefined
<BarHorizontal />
(1.0.6)
属性
描述
类型
默认值
yAxisData
Y轴数据数组
any[]
undefined
legendPosition
图例位置
'top' | 'left' | 'right' | 'bottom'
undefined
属性
描述
类型
默认值
colorList
表格颜色数组,影响 ['边框、表头背景色', '表头文字颜色', '汇总列文字颜色', 'body 背景色', 'row hover背景色', 'body 文字颜色']
string[]
undefined
showRank
显示排序列
boolean
undefined
showSum
显示汇总列
boolean
undefined
hideDimensionCompareTitle
再对比维度模式下,隐藏相同列表头
boolean
undefined
blockWrapHeight
wrapper高度
number
500
sortKey
表格列排序localstorage的key
string
undefined
columnWidth
列宽度
150
undefined
antdOptions
Ant Design table 配置
TableProps
undefined
setTableOption
可用来设置处理后的 columns
和 dataSource
<T, K>(columns: any[], dataSource: any[]) => { columns: T[]; dataSource: K[] }
undefined
A: 每个图表组件都支持 ref
传递,你可以参照下面的例子:
import { ChartProvider , Bar } from 'echarts-readymade'
import { useRef } from 'react'
const ref = useRef ( null )
useEffect ( ( ) => {
if ( ref . current ) {
// 当当!!
const instance = ref . current . getEchartsInstance ( )
// so next, you can use Echarts instance api
// instance.setOption(...)
}
} , [ ref . current ] )
< ChartProvider data = { data} >
< Bar ref = { ref } dimension = { dimension } valueList = { valueList } />
< / ChartProvider>