BigQuant使用文档

chart_options - 全局配置

由qxiao创建,最终由ydong 被浏览 82 用户

通过上面的文档简单介绍了全局配置,接下来会详细的介绍bigcharts.Charts接口中chart_options参数。

接口接受的chart_options 是一个dict类型的参数,key代表配置项的名称value表示配置项的值。配置项的值可以是bigcharts.opts中的对象也可以是dict类型的配置,chart_options = {“titleopts“: TitleOpts(is_show=True)} 或者 chart_options = {“titleopts“: {“is_show”: True}}。

下面是支持的全局配置的所有key:

"title_opts", "legend_opts", "tooltip_opts", "toolbox_opts", "brush_opts", visualmap_opts", "datazoom_opts", "xaxis_opts", "yaxis_opts"

title_opts (标题配置项)

from bigcharts.opts import TitleOpts

class TitleOpts(
    # 是否显示标题组件。
    is_show: bool = True,

    # 主标题文本,支持使用 \n 换行。
    title: Optional[str] = None,

    # 主标题跳转 URL 链接
    title_link: Optional[str] = None,

    # 主标题跳转链接方式
    # 默认值是: blank
    # 可选参数: 'self', 'blank'
    # 'self' 当前窗口打开; 'blank' 新窗口打开
    title_target: Optional[str] = None,

    # 副标题文本,支持使用 \n 换行。
    subtitle: Optional[str] = None,

    # 副标题跳转 URL 链接
    subtitle_link: Optional[str] = None,

    # 副标题跳转链接方式
    # 默认值是: blank
    # 可选参数: 'self', 'blank'
    # 'self' 当前窗口打开; 'blank' 新窗口打开
    subtitle_target: Optional[str] = None,

    # title 组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'left', 'center', 'right'。
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
    pos_left: Optional[str] = None,

    # title 组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_right: Optional[str] = None,

    # title 组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'top', 'middle', 'bottom'。
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
    pos_top: Optional[str] = None,

    # title 组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_bottom: Optional[str] = None,

    # 标题内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。
    # // 设置内边距为 5
    # padding: 5
    # // 设置上下的内边距为 5,左右的内边距为 10
    # padding: [5, 10]
    # // 分别设置四个方向的内边距
    # padding: [
    #     5,  // 上
    #     10, // 右
    #     5,  // 下
    #     10, // 左
    # ]
    padding: Union[Sequence, Numeric] = 5,

    # 主副标题之间的间距。
    item_gap: Numeric = 10,

    # 整体(包括 text 和 subtext)的水平对齐。
    # 可选值:'auto'、'left'、'right'、'center'。
    text_align: str = "auto",

    # 整体(包括 text 和 subtext)的垂直对齐。
    # 可选值:'auto'、'left'、'right'、'center'。
    text_vertical_align: str = "auto",

    # 是否触发事件。
    is_trigger_event: bool = False,

    # 主标题字体样式配置项,参考 `series_options.TextStyleOpts`
    title_textstyle_opts: Union[TextStyleOpts, dict, None] = None,

    # 副标题字体样式配置项,参考 `series_options.TextStyleOpts`
    subtitle_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
)

legend_opts(图例配置项)

from bigcharts.opts import LegendOpts


class LegendOpts(
    # 图例的类型。可选值:
    # 'plain':普通图例。缺省就是普通图例。
    # 'scroll':可滚动翻页的图例。当图例数量较多时可以使用。
    type_: Optional[str] = None,

    # 图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 false 关闭
    # 除此之外也可以设成 'single' 或者 'multiple' 使用单选或者多选模式。
    selected_mode: Union[str, bool, None] = None,

    # 是否显示图例组件
    is_show: bool = True,

    # 图例组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'left', 'center', 'right'。
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
    pos_left: Union[str, Numeric, None] = None,

    # 图例组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_right: Union[str, Numeric, None] = None,

    # 图例组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'top', 'middle', 'bottom'。
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
    pos_top: Union[str, Numeric, None] = None,

    # 图例组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_bottom: Union[str, Numeric, None] = None,

    # 图例列表的布局朝向。可选:'horizontal', 'vertical'
    orient: Optional[str] = None,

    # 图例标记和文本的对齐。默认自动(auto)
    # 根据组件的位置和 orient 决定
    # 当组件的 left 值为 'right' 以及纵向布局(orient 为 'vertical')的时候为右对齐,即为 'right'。
    # 可选参数: `auto`, `left`, `right`
    align: Optional[str] = None,

    # 图例内边距,单位px,默认各方向内边距为5
    padding: int = 5,

    # 图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。
    # 默认间隔为 10
    item_gap: int = 10,

    # 图例标记的图形宽度。默认宽度为 25
    item_width: int = 25,

    # 图例标记的图形高度。默认高度为 14
    item_height: int = 14,

    # 图例关闭时的颜色。默认是 #ccc
    inactive_color: Optional[str] = None,

    # 图例组件字体样式,参考 `series_options.TextStyleOpts`
    textstyle_opts: Union[TextStyleOpts, dict, None] = None,

    # 图例项的 icon。
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。
    # 可以通过 'path://' 将图标设置为任意的矢量路径。
    legend_icon: Optional[str] = None,

    # 图例背景色,默认透明。
    background_color: Optional[str] = "transparent",

    # 图例的边框颜色。支持的颜色格式同 backgroundColor。
    border_color: Optional[str] = "#ccc",

    # 图例的边框线宽。
    border_width: int = 1,

    # 圆角半径,单位px,支持传入数组分别指定 4 个圆角半径。 如:
    border_radius: Union[int, Sequence] = 0,

    # legend.type 为 'scroll' 时有效。图例控制块中,按钮和页信息之间的间隔。
    page_button_item_gap: int = 5,

    # legend.type 为 'scroll' 时有效。图例控制块和图例项之间的间隔。
    page_button_gap: Optional[int] = None,

    # legend.type 为 'scroll' 时有效。图例控制块的位置。可选值为:
    # 'start':控制块在左或上。
    # 'end':控制块在右或下。
    page_button_position: str = "end",

    # legend.type 为 'scroll' 时有效。
    # 图例控制块中,页信息的显示格式。默认为 '{current}/{total}',其中 {current} 是当前页号(从 1 开始计数),{total} 是总页数。
    # 如果 pageFormatter 使用函数,须返回字符串,参数为:
    # {
    #     current: number
    #     total: number
    # }
    page_formatter: JSFunc = "{current}/{total}",

    # legend.type 为 'scroll' 时有效。图例控制块的图标。
    page_icon: Optional[str] = None,

    # legend.type 为 'scroll' 时有效。翻页按钮的颜色。
    page_icon_color: str = "#2f4554",

    # legend.type 为 'scroll' 时有效。翻页按钮不激活时(即翻页到头时)的颜色。
    page_icon_inactive_color: str = "#aaa",

    # legend.type 为 'scroll' 时有效。
    # 翻页按钮的大小。可以是数字,也可以是数组,如 [10, 3],表示 [宽,高]。
    page_icon_size: Union[int, Sequence] = 15,

    # 图例翻页是否使用动画。
    is_page_animation: Optional[bool] = None,

    # 图例翻页时的动画时长。
    page_animation_duration_update: int = 800,

    # 图例组件中的选择器按钮,目前包括全选和反选两种功能。
    # 默认不显示,用户可手动开启,也可以手动配置每个按钮的标题。
    selector: Union[bool, Sequence] = False,

    # 选择器的位置,可以放在图例的尾部或者头部,对应的值分别为 'end' 和 'start'。
    # 默认情况下,图例横向布局的时候,选择器放在图例的尾部;图例纵向布局的时候,选择器放在图例的头部。
    selector_position: str = "auto",

    # 选择器按钮之间的间隔。
    selector_item_gap: int = 7,

    # 选择器按钮与图例组件之间的间隔。
    selector_button_gap: int = 10,
)

tooltip_opts(提示框配置项)

from bigcharts.opts import TooltipOpts


class TooltipOpts(
    # 是否显示提示框组件,包括提示框浮层和 axisPointer。
    is_show: bool = True,

    # 触发类型。可选:
    # 'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
    # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
    # 'none': 什么都不触发
    trigger: str = "item",

    # 提示框触发的条件,可选:
    # 'mousemove': 鼠标移动时触发。
    # 'click': 鼠标点击时触发。
    # 'mousemove|click': 同时鼠标移动和点击时触发。
    # 'none': 不在 'mousemove' 或 'click' 时触发,
    trigger_on: str = "mousemove|click",

    # 指示器类型。可选
    # 'line':直线指示器
    # 'shadow':阴影指示器
    # 'none':无指示器
    # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。
    axis_pointer_type: str = "line",

    # 是否显示提示框浮层,默认显示。
    # 只需 tooltip 触发事件或显示 axisPointer 而不需要显示内容时可配置该项为 false。
    is_show_content: bool = True,

    # 是否永远显示提示框内容,
    # 默认情况下在移出可触发提示框区域后一定时间后隐藏,设置为 true 可以保证一直显示提示框内容。
    is_always_show_content: bool = False,

    # 浮层显示的延迟,单位为 ms,默认没有延迟,也不建议设置。
    show_delay: Numeric = 0,

    # 浮层隐藏的延迟,单位为 ms,在 alwaysShowContent 为 true 的时候无效。
    hide_delay: Numeric = 100,

    # 提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。
    # 1、通过数组配置:
    # 绝对位置,相对于容器左侧 10px, 上侧 10 px ===> position: [10, 10]
    # 相对位置,放置在容器正中间 ===> position: ['50%', '50%']
    # 2、通过回调函数配置
    # 3、固定参数配置:'inside','top','left','right','bottom'
    position: Union[str, Sequence, JSFunc] = None,

    # 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。
    # 字符串模板 模板变量有:
    # {a}:系列名。
    # {b}:数据名。
    # {c}:数据值。
    # {@xxx}:数据中名为 'xxx' 的维度的值,如 {@product} 表示名为 'product'` 的维度的值。
    # {@[n]}:数据中维度 n 的值,如{@[3]}` 表示维度 3 的值,从 0 开始计数。
    # 示例:formatter: '{b}: {@score}'
    # 
    # 回调函数,回调函数格式:
    # (params: Object|Array) => string
    # 参数 params 是 formatter 需要的单个数据集。格式如下:
    # {
    #    componentType: 'series',
    #    // 系列类型
    #    seriesType: string,
    #    // 系列在传入的 option.series 中的 index
    #    seriesIndex: number,
    #    // 系列名称
    #    seriesName: string,
    #    // 数据名,类目名
    #    name: string,
    #    // 数据在传入的 data 数组中的 index
    #    dataIndex: number,
    #    // 传入的原始数据项
    #    data: Object,
    #    // 传入的数据值
    #    value: number|Array,
    #    // 数据图形的颜色
    #    color: string,
    # }
    formatter: Optional[str] = None,

    # 提示框浮层的背景颜色。
    background_color: Optional[str] = None,

    # 提示框浮层的边框颜色。
    border_color: Optional[str] = None,

    # 提示框浮层的边框宽。
    border_width: Numeric = 0,

    # 文字样式配置项,参考 `series_options.TextStyleOpts`
    textstyle_opts: TextStyleOpts = TextStyleOpts(font_size=14),
)

toolbox_opts(工具箱配置项)

from bigcharts.opts import ToolboxOpts


class ToolboxOpts(
    # 是否显示工具栏组件
    is_show: bool = True,

    # 工具栏 icon 的布局朝向。
    # 可选:'horizontal', 'vertical'
    orient: str = "horizontal",

    # 工具栏组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'left', 'center', 'right'。
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐
    pos_left: str = "80%",

    # 工具栏组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_right: Optional[str] = None,

    # 工具栏组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'top', 'middle', 'bottom'。
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
    pos_top: Optional[str] = None,

    # 工具栏组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_bottom: Optional[str] = None,

    # 各工具配置项,参考 `global_options.ToolBoxFeatureOpts`
    feature: Union[ToolBoxFeatureOpts, dict] = ToolBoxFeatureOpts(),
)

brush_opts (区域选择组件配置项)

from bigcharts.opts import BrushOpts


class BrushOpts(
    # 使用在 toolbox 中的按钮。默认值为 ["rect", "polygon", "keep", "clear"]
    # brush 相关的 toolbox 按钮有:
    # "rect":开启矩形选框选择功能。
    # "polygon":开启任意形状选框选择功能。
    # "lineX":开启横向选择功能。
    # "lineY"':开启纵向选择功能。
    # "keep":切换『单选』和『多选』模式。后者可支持同时画多个选框。前者支持单击清除所有选框。
    # "clear":清空所有选框。
    tool_box: Optional[Sequence] = None,

    # 不同系列间,选中的项可以联动。
    # brush_link 配置项是一个列表,内容是 seriesIndex,指定了哪些 series 可以被联动。
    # 例如可以是:
    # [3, 4, 5] 表示 seriesIndex 为 3, 4, 5 的 series 可以被联动。
    # "all" 表示所有 series 都进行 brushLink。
    # None 表示不启用 brush_link 功能。
    brush_link: Union[Sequence, str] = None,

    # 指定哪些 series 可以被刷选,可取值为:
    # "all": 所有 series
    # series index 列表, 如 [0, 4, 2],表示指定这些 index 所对应的坐标系。
    # 某个 series index, 如 0,表示这个 index 所对应的坐标系。
    series_index: Union[Sequence, Numeric, str] = None,

    # 指定哪些 geo 可以被刷选。可以设置 brush 是全局的还是属于坐标系的。
    # 全局 brush
    # 在 echarts 实例中任意地方刷选。这是默认情况。如果没有指定为坐标系 brush,就是全局 brush。
    # 坐标系 brush
    # 在指定的坐标系中刷选。选框可以跟随坐标系的缩放和平移( roam 和 dataZoom )而移动。
    # 坐标系 brush 实际更为常用,尤其是在 geo 中。
    # 通过指定 brush.geoIndex 或 brush.xAxisIndex 或 brush.yAxisIndex 来规定可以在哪些坐标系中进行刷选。
    # 指定哪些 series 可以被刷选,可取值为:
    # "all": 表示所有 series
    # series index 列表, 如 [0, 4, 2],表示指定这些 index 所对应的坐标系。
    # 某个 series index, 如 0,表示这个 index 所对应的坐标系。
    geo_index: Union[Sequence, Numeric, str] = None,

    # 指定哪些 xAxisIndex 可以被刷选。可以设置 brush 是全局的还是属于坐标系的。
    # 全局 brush
    # 在 echarts 实例中任意地方刷选。这是默认情况。如果没有指定为坐标系 brush,就是全局 brush。
    # 坐标系 brush
    # 在指定的坐标系中刷选。选框可以跟随坐标系的缩放和平移( roam 和 dataZoom )而移动。
    # 坐标系 brush 实际更为常用,尤其是在 geo 中。
    # 通过指定 brush.geoIndex 或 brush.xAxisIndex 或 brush.yAxisIndex 来规定可以在哪些坐标系中进行刷选。
    # 指定哪些 series 可以被刷选,可取值为:
    # "all": 表示所有 series
    # series index 列表, 如 [0, 4, 2],表示指定这些 index 所对应的坐标系。
    # 某个 series index, 如 0,表示这个 index 所对应的坐标系。
    x_axis_index: Union[Sequence, Numeric, str] = None,

    # 指定哪些 yAxisIndex 可以被刷选。可以设置 brush 是全局的还是属于坐标系的。
    # 全局 brush
    # 在 echarts 实例中任意地方刷选。这是默认情况。如果没有指定为坐标系 brush,就是全局 brush。
    # 坐标系 brush
    # 在指定的坐标系中刷选。选框可以跟随坐标系的缩放和平移( roam 和 dataZoom )而移动。
    # 坐标系 brush 实际更为常用,尤其是在 geo 中。
    # 通过指定 brush.geoIndex 或 brush.xAxisIndex 或 brush.yAxisIndex 来规定可以在哪些坐标系中进行刷选。
    # 指定哪些 series 可以被刷选,可取值为:
    # "all": 表示所有 series
    # series index 列表, 如 [0, 4, 2],表示指定这些 index 所对应的坐标系。
    # 某个 series index, 如 0,表示这个 index 所对应的坐标系。
    y_axis_index: Union[Sequence, Numeric, str] = None,

    # 默认的刷子类型。默认值为 rect。
    # 可选参数如下:
    # "rect":矩形选框。
    # "polygon":任意形状选框。
    # "lineX":横向选择。
    # "lineY":纵向选择。
    brush_type: str = "rect",

    # 默认的刷子的模式。可取值为:
    # 默认为 single
    # "single":单选。
    # "multiple":多选。
    brush_mode: str = "single",

    # 已经选好的选框是否可以被调整形状或平移。默认值为 True
    transformable: bool = True,

    # 选框的默认样式,值为
    # {
    #      "borderWidth": 1,
    #      "color": "rgba(120,140,180,0.3)",
    #      "borderColor": "rgba(120,140,180,0.8)"
    # },
    brush_style: Optional[dict] = None,

    # 默认情况,刷选或者移动选区的时候,会不断得发 brushSelected 事件,从而告诉外界选中的内容。
    # 但是频繁的事件可能导致性能问题,或者动画效果很差。
    # 所以 brush 组件提供了 brush.throttleType,brush.throttleDelay 来解决这个问题。
    # throttleType 取值可以是:
    # "debounce":表示只有停止动作了(即一段时间没有操作了),才会触发事件。时间阈值由 brush.throttleDelay 指定。
    # "fixRate":表示按照一定的频率触发事件,时间间隔由 brush.throttleDelay 指定。
    throttle_type: str = "fixRate",

    # 默认为 0 表示不开启 throttle。
    throttle_delay: Numeric = 0,

    # 在 brush_mode 为 "single" 的情况下,是否支持单击清除所有选框。
    remove_on_click: bool = True,

    # 定义在选中范围外的视觉元素。最终参数以字典的形式进行配置
    # 可选的视觉元素有:
    # symbol: 图元的图形类别。
    # symbolSize: 图元的大小。
    # color: 图元的颜色。
    # colorAlpha: 图元的颜色的透明度。
    # opacity: 图元以及其附属物(如文字标签)的透明度。
    # colorLightness: 颜色的明暗度,参见 https://en.wikipedia.org/wiki/HSL_and_HSV。
    # colorSaturation: 颜色的饱和度,参见 https://en.wikipedia.org/wiki/HSL_and_HSV。
    # colorHue: 颜色的色调,参见 https://en.wikipedia.org/wiki/HSL_and_HSV。
    out_of_brush: dict = None,
)

visualmap_opts(视觉映射配置项)

from bigcharts.opts import VisualMapOpts


class VisualMapOpts(
    # 是否显示视觉映射配置
    is_show: bool = True,

    # 映射过渡类型,可选,"color", "size"
    type_: str = "color",

    # 指定 visualMapPiecewise 组件的最小值。
    min_: Union[int, float] = 0,

    # 指定 visualMapPiecewise 组件的最大值。
    max_: Union[int, float] = 100,

    # 两端的文本,如['High', 'Low']。
    range_text: Union[list, tuple] = None,

    # visualMap 组件过渡颜色
    range_color: Union[Sequence[str]] = None,

    # visualMap 组件过渡 symbol 大小
    range_size: Union[Sequence[int]] = None,

    # visualMap 图元以及其附属物(如文字标签)的透明度。
    range_opacity: Optional[Numeric] = None,

    # 如何放置 visualMap 组件,水平('horizontal')或者竖直('vertical')。
    orient: str = "vertical",

    # visualMap 组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'left', 'center', 'right'。
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
    pos_left: Optional[str] = None,

    # visualMap 组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_right: Optional[str] = None,

    # visualMap 组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'top', 'middle', 'bottom'。
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
    pos_top: Optional[str] = None,

    # visualMap 组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    pos_bottom: Optional[str] = None,

    # 对于连续型数据,自动平均切分成几段。默认为5段。连续数据的范围需要 max 和 min 来指定
    split_number: int = 5,

    # 指定取哪个系列的数据,默认取所有系列。
    series_index: Union[Numeric, Sequence, None] = None,

    # 组件映射维度
    dimension: Optional[Numeric] = None,

    # 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
    is_calculable: bool = True,

    # 是否为分段型
    is_piecewise: bool = False,

    # 是否反转 visualMap 组件
    is_inverse: bool = False,

    # 数据展示的小数精度。
    # 连续型数据平均分段,精度根据数据自动适应。
    # 连续型数据自定义分段或离散数据根据类别分段模式,精度默认为0(没有小数)。
    precision: Optional[int] = None,

    # 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式。例如:
    # pieces: [
    #   {"min": 1500}, // 不指定 max,表示 max 为无限大(Infinity)。
    #   {"min": 900, "max": 1500},
    #   {"min": 310, "max": 1000},
    #   {"min": 200, "max": 300},
    #   {"min": 10, "max": 200, "label": '10 到 200(自定义label)'},
    #   {"value": 123, "label": '123(自定义特殊颜色)', "color": 'grey'}, //表示 value 等于 123 的情况
    #   {"max": 5}     // 不指定 min,表示 min 为无限大(-Infinity)。
    # ]
    pieces: Optional[Sequence] = None,

    # 定义 在选中范围外 的视觉元素。(用户可以和 visualMap 组件交互,用鼠标或触摸选择范围)
    #  可选的视觉元素有:
    #  symbol: 图元的图形类别。
    #  symbolSize: 图元的大小。
    #  color: 图元的颜色。
    #  colorAlpha: 图元的颜色的透明度。
    #  opacity: 图元以及其附属物(如文字标签)的透明度。
    #  colorLightness: 颜色的明暗度,参见 HSL。
    #  colorSaturation: 颜色的饱和度,参见 HSL。
    #  colorHue: 颜色的色调,参见 HSL。
    out_of_range: Optional[Sequence] = None,

    # 图形的宽度,即长条的宽度。
    item_width: int = 0,

    # 图形的高度,即长条的高度。
    item_height: int = 0,

    # visualMap 组件的背景色。
    background_color: Optional[str] = None,

    # visualMap 组件的边框颜色。
    border_color: Optional[str] = None,

    # visualMap 边框线宽,单位px。
    border_width: int = 0,

    # 文字样式配置项,参考 `series_options.TextStyleOpts`
    textstyle_opts: Union[TextStyleOpts, dict, None] = None,
)

datazoom_opts(区域缩放配置项)

from bigcharts.opts import DataZoomOpts


class DataZoomOpts(
    # 是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。
    is_show: bool = True,

    # 组件类型,可选 "slider", "inside"
    type_: str = "slider",

    # 拖动时,是否实时更新系列的视图。如果设置为 false,则只在拖拽结束的时候更新。
    is_realtime: bool = True,

    # 数据窗口范围的起始百分比。范围是:0 ~ 100。表示 0% ~ 100%。
    range_start: Union[Numeric, None] = 20,

    # 数据窗口范围的结束百分比。范围是:0 ~ 100
    range_end: Union[Numeric, None] = 80,

    # 数据窗口范围的起始数值。如果设置了 start 则 startValue 失效。
    start_value: Union[int, str, None] = None,

    # 数据窗口范围的结束数值。如果设置了 end 则 endValue 失效。
    end_value: Union[int, str, None] = None,

    # 布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴
    # 可选值为:'horizontal', 'vertical'
    orient: str = "horizontal",

    # 设置 dataZoom-inside 组件控制的 x 轴(即 xAxis,是直角坐标系中的概念,参见 grid)。
    # 不指定时,当 dataZoom-inside.orient 为 'horizontal'时,默认控制和 dataZoom 平行的第一个 xAxis
    # 如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。
    xaxis_index: Union[int, Sequence[int], None] = None,

    # 设置 dataZoom-inside 组件控制的 y 轴(即 yAxis,是直角坐标系中的概念,参见 grid)。
    # 不指定时,当 dataZoom-inside.orient 为 'horizontal'时,默认控制和 dataZoom 平行的第一个 yAxis
    # 如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。
    yaxis_index: Union[int, Sequence[int], None] = None,

    # 是否锁定选择区域(或叫做数据窗口)的大小。
    # 如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。
    is_zoom_lock: bool = False,

    # dataZoom-slider 组件离容器左侧的距离。
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'left', 'center', 'right'。
    # 如果 left 的值为 'left', 'center', 'right',组件会根据相应的位置自动对齐。
    pos_left: Optional[str] = None,

    # dataZoom-slider 组件离容器上侧的距离。
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
    # 也可以是 'top', 'middle', 'bottom'。
    # 如果 top 的值为 'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
    pos_top: Optional[str] = None,

    # dataZoom-slider 组件离容器右侧的距离。
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    # 默认自适应。
    pos_right: Optional[str] = None,

    # dataZoom-slider组件离容器下侧的距离。
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
    # 默认自适应。
    pos_bottom: Optional[str] = None,

    # dataZoom 的运行原理是通过数据过滤以及在内部设置轴的显示窗口来达到数据窗口缩放的效果。
    # 'filter':当前数据窗口外的数据,被过滤掉。即会影响其他轴的数据范围。
    #  每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。
    # 'weakFilter':当前数据窗口外的数据,被过滤掉。即会影响其他轴的数据范围。
    #  每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。
    # 'empty':当前数据窗口外的数据,被设置为空。即不会影响其他轴的数据范围。
    # 'none': 不过滤数据,只改变数轴范围。
    filter_mode: str = "filter"
)

xaxis_opts、yaxix_opts(坐标轴配置项)

from bigcharts.opts import AxisOpts


class AxisOpts(
    # 坐标轴类型。可选:
    # 'value': 数值轴,适用于连续数据。
    # 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
    # 'time': 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,
    # 例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。
    # 'log' 对数轴。适用于对数数据。
    type_: Optional[str] = None,

    # 坐标轴名称。
    name: Optional[str] = None,

    # 是否显示 x 轴。
    is_show: bool = True,

    # 只在数值轴中(type: 'value')有效。
    # 是否是脱离 0 值比例。设置成 true 后坐标刻度不会强制包含零刻度。在双数值轴的散点图中比较有用。
    # 在设置 min 和 max 之后该配置项无效。
    is_scale: bool = False,

    # 是否反向坐标轴。
    is_inverse: bool = False,

    # 坐标轴名称显示位置。可选:
    # 'start', 'middle' 或者 'center','end'
    name_location: str = "end",

    # 坐标轴名称与轴线之间的距离。
    name_gap: Numeric = 15,

    # 坐标轴名字旋转,角度值。
    name_rotate: Optional[Numeric] = None,

    # 强制设置坐标轴分割间隔。
    # 因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,
    # 这时候可以使用 interval 配合 min、max 强制设定刻度划分,一般不建议使用。
    # 无法在类目轴中使用。在时间轴(type: 'time')中需要传时间戳,在对数轴(type: 'log')中需要传指数值。
    interval: Optional[Numeric] = None,

    # x 轴所在的 grid 的索引,默认位于第一个 grid。
    grid_index: Numeric = 0,

    # x 轴的位置。可选:
    # 'top', 'bottom'
    # 默认 grid 中的第一个 x 轴在 grid 的下方('bottom'),第二个 x 轴视第一个 x 轴的位置放在另一侧。
    position: Optional[str] = None,

    # Y 轴相对于默认位置的偏移,在相同的 position 上有多个 Y 轴的时候有用。
    offset: Numeric = 0,

    # 坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整。 
    # 默认值是 5
    split_number: Numeric = 5,

    # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样。
    # 类目轴中 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,
    # 标签和数据点都会在两个刻度之间的带(band)中间。
    # 非类目轴,包括时间,数值,对数轴,boundaryGap是一个两个值的数组,分别表示数据最小值和最大值的延伸范围
    # 可以直接设置数值或者相对的百分比,在设置 min 和 max 后无效。 示例:boundaryGap: ['20%', '20%']
    boundary_gap: Union[str, bool, None] = None,

    # 坐标轴刻度最小值。
    # 可以设置成特殊值 'dataMin',此时取数据在该轴上的最小值作为最小刻度。
    # 不设置时会自动计算最小值保证坐标轴刻度的均匀分布。
    # 在类目轴中,也可以设置为类目的序数(如类目轴 data: ['类A', '类B', '类C'] 中,序数 2 表示 '类C'。
    # 也可以设置为负数,如 -3)。
    min_: Union[Numeric, str, None] = None,

    # 坐标轴刻度最大值。
    # 可以设置成特殊值 'dataMax',此时取数据在该轴上的最大值作为最大刻度。
    # 不设置时会自动计算最大值保证坐标轴刻度的均匀分布。
    # 在类目轴中,也可以设置为类目的序数(如类目轴 data: ['类A', '类B', '类C'] 中,序数 2 表示 '类C'。
    # 也可以设置为负数,如 -3)。
    max_: Union[Numeric, str, None] = None,

    # 自动计算的坐标轴最小间隔大小。
    # 例如可以设置成1保证坐标轴分割刻度显示成整数。
    # 默认值是 0
    min_interval: Numeric = 0,

    # 自动计算的坐标轴最大间隔大小。
    # 例如,在时间轴((type: 'time'))可以设置成 3600 * 24 * 1000 保证坐标轴分割刻度最大为一天。
    max_interval: Optional[Numeric] = None,

    # 坐标轴刻度线配置项,参考 `global_options.AxisLineOpts`
    axisline_opts: Union[AxisLineOpts, dict, None] = None,

    # 坐标轴刻度配置项,参考 `global_options.AxisTickOpts`
    axistick_opts: Union[AxisTickOpts, dict, None] = None,

    # 坐标轴标签配置项,参考 `series_options.LabelOpts`
    axislabel_opts: Union[LabelOpts, dict, None] = None,

    # 坐标轴指示器配置项,参考 `global_options.AxisPointerOpts`
    axispointer_opts: Union[AxisPointerOpts, dict, None] = None,

    # 坐标轴名称的文字样式,参考 `series_options.TextStyleOpts`
    name_textstyle_opts: Union[TextStyleOpts, dict, None] = None,

    # 分割区域配置项,参考 `series_options.SplitAreaOpts`
    splitarea_opts: Union[SplitAreaOpts, dict, None] = None,

    # 分割线配置项,参考 `series_options.SplitLineOpts`
    splitline_opts: Union[SplitLineOpts, dict] = SplitLineOpts(),

    # 坐标轴次刻度线相关设置,参考 `series_options.MinorTickOpts`
    minor_tick_opts: Union[MinorTickOpts, dict, None] = None,

    # 坐标轴在 grid 区域中的次分隔线。次分割线会对齐次刻度线 minorTick,参考 `series_options.MinorSplitLineOpts`
    minor_split_line_opts: Union[MinorSplitLineOpts, dict, None] = None,
)

axis_line_opts(坐标轴轴线配置项)

from bigcharts.opts import AxisLineOpts


class AxisLineOpts(
    # 是否显示坐标轴轴线。
    is_show: bool = True,

    # X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。
    is_on_zero: bool = True,

    # 当有双轴时,可以用这个属性手动指定,在哪个轴的 0 刻度上。
    on_zero_axis_index: int = 0,

    # 轴线两边的箭头。可以是字符串,表示两端使用同样的箭头;或者长度为 2 的字符串数组,分别表示两端的箭头。
    # 默认不显示箭头,即 'none'。
    # 两端都显示箭头可以设置为 'arrow'。
    # 只在末端显示箭头可以设置为 ['none', 'arrow']。
    symbol: Optional[str] = None,

    # 坐标轴线风格配置项,参考 `series_optionsLineStyleOpts`
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,
)

axis_tick_opts(坐标轴刻度配置项)

from bigcharts.opts import AxisTickOpts


class AxisTickOpts(
    # 是否显示坐标轴刻度。
    is_show: bool = True,

    # 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。
    is_align_with_label: bool = False,

    # 坐标轴刻度是否朝内,默认朝外。
    is_inside: bool = False,

    # 坐标轴刻度的长度。
    length: Optional[Numeric] = None,

    # 坐标轴线风格配置项,参考 `series_optionsLineStyleOpts`
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,
)

axis_pointer_opts(坐标轴指示器配置项)

from bigcharts.opts import AxisPointerOpts


class AxisPointerOpts(
    # 默认显示坐标轴指示器
    is_show: bool = True,

    # 不同轴的 axisPointer 可以进行联动,在这里设置。联动表示轴能同步一起活动。
    # 轴依据他们的 axisPointer 当前对应的值来联动。
    # link 是一个数组,其中每一项表示一个 link group,一个 group 中的坐标轴互相联动。
    # 具体使用方式可以参见:https://www.echartsjs.com/option.html#axisPointer.link
    link: Sequence[dict] = None,

    # 指示器类型。
    # 可选参数如下,默认为 'line'
    # 'line' 直线指示器
    # 'shadow' 阴影指示器
    # 'none' 无指示器
    type_: str = "line",

    # 坐标轴指示器的文本标签,坐标轴标签配置项,参考 `series_options.LabelOpts`
    label: Union[LabelOpts, dict, None] = None,

    # 坐标轴线风格配置项,参考 `series_optionsLineStyleOpts`
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,
)

\