跳到主要内容

练习1:修改Echarts图表符号

在Superset的线图中,可以显示图表的数据点标记,它是一个空心圆的标记,同时可以控制标记大小。

默认是一个空心圆,但是很不美观,是否可以换成其他的符号标记,答案是肯定的。这个图表插件是一个Echarts图表,熟悉Echarts图表的就知道echarts图表中的线图是支持好几种符号标记的,可以使用参数选项series-line.symbol控制,有'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'这些参数可选。

所以接下来要实现这样的功能我们需要定义一个控件接收选择符号的参数选项,然后将接收到的参数值传递给echarts实例就可以实现期望的效果。

接下来看看代码是怎么实现的吧。

superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts
export enum EchartsLineSymbolType {
Circle = 'circle',
Rect = 'rect',
RoundRect = 'roundRect',
Triangle = 'triangle',
Diamond = 'diamond',
Pin = 'pin',
Arrow = 'arrow',
}

在上面的代码中:

  • types.ts:定义了一个枚举类型EchartsLineSymbolType提供了可选的几种值.
  • controls.tsx:我们将控件定义在了controls.tsx文件中,方便复用,因为折线图、面积图、阶梯图等都属于线图的一种,都会有使用到这个控件的地方。 这里定义了两个控件:markerAsEmptymarkerType,第一个控件选择标记是否为空心的,第二个控件选择标记的形状。最终使用markerSection组合导出。
  • controlPanel.tsx:我们从这里导入controls.tsx定义的控件。
  • transformProps.ts:解包formData中的控件参数,然后传入到transformSeries方法中处理参数值。
  • transformers.ts: 这是一个用于创建series的方法,在这里主要是在返回的series对象中添加了symbol的参数值。