Пример #1
0
def xy_axis(
    type=None,
    x_axis=None,
    xaxis_margin=8,
    xaxis_name_size=14,
    xaxis_name_gap=25,
    xaxis_name="",
    xaxis_name_pos="middle",
    xaxis_rotate=0,
    xaxis_min=None,
    xaxis_max=None,
    xaxis_type=None,
    xaxis_interval="auto",
    xaxis_force_interval=None,
    xaxis_pos=None,
    xaxis_label_textsize=12,
    xaxis_label_textcolor=None,
    xaxis_formatter=None,
    yaxis_margin=8,
    yaxis_name_size=14,
    yaxis_name_gap=25,
    yaxis_name="",
    yaxis_name_pos="middle",
    yaxis_rotate=0,
    yaxis_min=None,
    yaxis_max=None,
    yaxis_type=None,
    yaxis_interval="auto",
    yaxis_force_interval=None,
    yaxis_pos=None,
    yaxis_label_textsize=12,
    yaxis_label_textcolor=None,
    yaxis_formatter="",
    is_convert=False,
    is_xaxis_inverse=False,
    is_yaxis_inverse=False,
    is_xaxislabel_align=False,
    is_yaxislabel_align=False,
    is_xaxis_boundarygap=True,
    is_yaxis_boundarygap=True,
    is_xaxis_show=True,
    is_yaxis_show=True,
    is_splitline_show=True,
    **kwargs
):
    """
    直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline)。

    :param type:
        图形类型。
    :param x_axis:
        x 轴数据项。
    :param xaxis_margin:
        x 轴刻度标签与轴线之间的距离。默认为 8
    :param xaxis_name_size:
        x 轴名称体大小,默认为 14
    :param xaxis_name_gap:
        x 轴名称与轴线之间的距离,默认为 25
    :param xaxis_name:
        x 轴名称
    :param xaxis_name_pos:
        x 轴名称位置,有'start','middle','end'可选
    :param xaxis_rotate:
        x 轴刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标
        签之间重叠。默认为 0,即不旋转。旋转的角度从 -90 度到 90 度。
    :param xaxis_min:
        x 坐标轴刻度最小值,默认为自适应。使用特殊值 "dataMin" 可自定以数
        据中最小值为 x 轴最小值。
    :param xaxis_max:
        x 坐标轴刻度最大值,默认为自适应。使用特殊值 "dataMax" 可自定以数
        据中最小值为 x 轴最大值。
    :param xaxis_type:
        x 坐标轴类型
            'value':数值轴,适用于连续数据。
            'category':类目轴,适用于离散的类目数据。
            'log':对数轴。适用于对数数据。
    :param xaxis_interval:
        x 轴刻度标签的显示间隔,在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。
        设置成 0 强制显示所有标签。设置为 1,表示『隔一个标签显示一个标签』,
        如果值为 2,表示隔两个标签显示一个标签,以此类推
    :param xaxis_force_interval:
        强制设置 x 坐标轴分割间隔。如设置为 50 则刻度为 [0, 50, 150, ...],设置为 "auto"
        则只显示两个刻度。一般情况下不建议设置这个参数!!
        因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,
        这时候可以使用 interval 配合 min、max 强制设定刻度划分。在类目轴中无效。
    :param xaxis_pos:
        x 坐标轴位置,有'top','bottom'可选
    :param xaxis_label_textsize:
        x 坐标轴标签字体大小
    :param xaxis_label_textcolor:
        x 坐标轴标签字体颜色
    :param xaxis_formatter:
        x 轴标签格式器,如 '天',则 x 轴的标签为数据加'天'(3 天,4 天),默认为 ""
        xaxis_formatter -> function
        ```python
        def label_formatter(params):
            return params.value + ' [Good!]'
        ```
        回调函数格式,更多内容请参考 [高级用法篇](zh-cn/advanced)
        ```
        (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,
        }
        ```
    :param yaxis_margin:
        y 轴刻度标签与轴线之间的距离。默认为 8
    :param yaxis_name_size:
        y 轴名称体大小,默认为 14
    :param yaxis_name_gap:
        y 轴名称与轴线之间的距离,默认为 25
    :param yaxis_name:
        y 轴名称
    :param yaxis_name_pos:
        y 轴名称位置,有'start', 'middle','end'可选
    :param yaxis_rotate:
        y 轴刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标
        签之间重叠。默认为 0,即不旋转。旋转的角度从 -90 度到 90 度。
    :param yaxis_min:
        y 坐标轴刻度最小值,默认为自适应。使用特殊值 "dataMin" 可自定以数
        据中最小值为 y 轴最小值。
    :param yaxis_max:
        y 坐标轴刻度最大值,默认为自适应。使用特殊值 "dataMax" 可自定以数
        据中最小值为 y 轴最大值。
    :param yaxis_type:
        y 坐标轴类型
            'value':数值轴,适用于连续数据。
            'category':类目轴,适用于离散的类目数据。
            'log':对数轴。适用于对数数据。
    :param yaxis_interval:
        y 轴刻度标签的显示间隔,在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。
        设置成 0 强制显示所有标签。设置为 1,表示『隔一个标签显示一个标签』,
        如果值为 2,表示隔两个标签显示一个标签,以此类推
    :param yaxis_force_interval:
        强制设置 y 坐标轴分割间隔。如设置为 50 则刻度为 [0, 50, 150, ...],设置为 "auto"
        则只显示两个刻度。一般情况下不建议设置这个参数!!
        因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,
        这时候可以使用 interval 配合 min、max 强制设定刻度划分。在类目轴中无效。
    :param yaxis_pos:
        y 坐标轴位置,有'left','right'可选
    :param yaxis_label_textsize:
        y 坐标轴标签字体大小
    :param yaxis_label_textcolor:
        y 坐标轴标签字体颜色
    :param yaxis_formatter:
        y 轴标签格式器,如 '天',则 y 轴的标签为数据加'天'(3 天,4 天),默认为 ""
        yaxis_formatter -> function
        ```python
        def label_formatter(params):
            return params.value + ' [Good!]'
        ```
        回调函数格式,更多内容请参考 [高级用法篇](zh-cn/advanced)
        ```
        (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,
        }
        ```
    :param is_convert:
        是否交换 x 轴与 y 轴
    :param is_xaxis_inverse:
        是否反向 x 坐标轴,默认为 False
    :param is_yaxis_inverse:
        是否反向 y 坐标轴,默认为 False
    :param is_xaxislabel_align:
        x 轴刻度线和标签是否对齐,默认为 False
    :param is_yaxislabel_align:
        y 轴刻度线和标签是否对齐,默认为 False
    :param is_xaxis_boundarygap:
        x 轴两边留白策略,适用于类目轴。类目轴中 boundaryGap 可以配置为 True 和 False。
        默认为 True,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)
        中间,即两边留白。
    :param is_yaxis_boundarygap:
        y 轴两边留白策略,适用于类目轴。类目轴中 boundaryGap 可以配置为 True 和 False。
        默认为 True,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)
        中间,即两边留白。
    :param is_xaxis_show:
        是否显示 x 轴
    :param is_yaxis_show:
        是否显示 y 轴
    :param is_splitline_show:
        是否显示 y 轴网格线,默认为 True。
    :param kwargs:
    """
    _xAxis = option.XAxis(
        name=xaxis_name,
        visibility=is_xaxis_show,
        name_location=xaxis_name_pos,
        name_gap=xaxis_name_gap,
        name_size=xaxis_name_size,
        position=xaxis_pos,
        boundary_gap=is_xaxis_boundarygap,
        label_alignment=is_xaxislabel_align,
        inverse=is_xaxis_inverse,
        value_range=[xaxis_min, xaxis_max],
        axis_type=xaxis_type,
        chart_type=type,
    )
    _xAxis["axisLabel"] = option.XAxisLabel(
        interval=xaxis_interval,
        rotate=xaxis_rotate,
        margin=xaxis_margin,
        text_size=xaxis_label_textsize,
        text_color=xaxis_label_textcolor,
        formatter=xaxis_formatter,
    )
    _yAxis = option.YAxis(
        name=yaxis_name,
        visibility=is_yaxis_show,
        name_location=yaxis_name_pos,
        name_gap=yaxis_name_gap,
        name_size=yaxis_name_size,
        position=yaxis_pos,
        boundary_gap=is_yaxis_boundarygap,
        label_alignment=is_yaxislabel_align,
        inverse=is_yaxis_inverse,
        value_range=[yaxis_min, yaxis_max],
        split_line=is_splitline_show,
        axis_type=yaxis_type,
        chart_type=type,
    )
    _yAxis["axisLabel"] = option.YAxisLabel(
        interval=yaxis_interval,
        rotate=yaxis_rotate,
        margin=yaxis_margin,
        text_size=yaxis_label_textsize,
        text_color=yaxis_label_textcolor,
        formatter=yaxis_formatter,
    )

    if is_convert:
        xaxis_type, yaxis_type = _yAxis["type"], _xAxis["type"]
        _xAxis["type"] = xaxis_type
        _yAxis.update(data=x_axis, type=yaxis_type)
    else:
        _xAxis["data"] = x_axis

    # 强制分割数值轴,在多 x、y 轴中可以使用强制分割使标刻线对齐
    if xaxis_force_interval is not None:
        _xAxis["interval"] = xaxis_force_interval
    if yaxis_force_interval is not None:
        _yAxis["interval"] = yaxis_force_interval

    # 返回字典
    return [_xAxis], [_yAxis]
Пример #2
0
def xy_axis(type=None,
            x_axis=None,
            xaxis_margin=8,
            xaxis_name_size=14,
            xaxis_name_gap=25,
            xaxis_name="",
            xaxis_name_pos="middle",
            xaxis_rotate=0,
            xaxis_min=None,
            xaxis_max=None,
            xaxis_type=None,
            xaxis_interval="auto",
            xaxis_force_interval=None,
            xaxis_pos=None,
            xaxis_label_textsize=12,
            xaxis_label_textcolor="#000",
            xaxis_formatter=None,
            yaxis_margin=8,
            yaxis_name_size=14,
            yaxis_name_gap=25,
            yaxis_name="",
            yaxis_name_pos="middle",
            yaxis_rotate=0,
            yaxis_min=None,
            yaxis_max=None,
            yaxis_type=None,
            yaxis_interval="auto",
            yaxis_force_interval=None,
            yaxis_pos=None,
            yaxis_label_textsize=12,
            yaxis_label_textcolor="#000",
            yaxis_formatter="",
            is_convert=False,
            is_xaxis_inverse=False,
            is_yaxis_inverse=False,
            is_xaxislabel_align=False,
            is_yaxislabel_align=False,
            is_xaxis_boundarygap=True,
            is_yaxis_boundarygap=True,
            is_xaxis_show=True,
            is_yaxis_show=True,
            is_splitline_show=True,
            **kwargs):
    """ 直角坐标系中的 x、y 轴(Line、Bar、Scatter、EffectScatter、Kline)。

    :param type:
        图形类型。
    :param x_axis:
        x 轴数据项。
    :param xaxis_margin:
        x 轴刻度标签与轴线之间的距离。默认为 8
    :param xaxis_name_size:
        x 轴名称体大小,默认为 14
    :param xaxis_name_gap:
        x 轴名称与轴线之间的距离,默认为 25
    :param xaxis_name:
        x 轴名称
    :param xaxis_name_pos:
        x 轴名称位置,有'start','middle','end'可选
    :param xaxis_rotate:
        x 轴刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标
        签之间重叠。默认为 0,即不旋转。旋转的角度从 -90 度到 90 度。
    :param xaxis_min:
        x 坐标轴刻度最小值,默认为自适应。使用特殊值 "dataMin" 可自定以数
        据中最小值为 x 轴最小值。
    :param xaxis_max:
        x 坐标轴刻度最大值,默认为自适应。使用特殊值 "dataMax" 可自定以数
        据中最小值为 x 轴最大值。
    :param xaxis_type:
        x 坐标轴类型
            'value':数值轴,适用于连续数据。
            'category':类目轴,适用于离散的类目数据。
            'log':对数轴。适用于对数数据。
    :param xaxis_interval:
        x 轴刻度标签的显示间隔,在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。
        设置成 0 强制显示所有标签。设置为 1,表示『隔一个标签显示一个标签』,
        如果值为 2,表示隔两个标签显示一个标签,以此类推
    :param xaxis_force_interval:
        强制设置 x 坐标轴分割间隔。如设置为 50 则刻度为 [0, 50, 150, ...],设置为 "auto"
        则只显示两个刻度。一般情况下不建议设置这个参数!!
        因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,
        这时候可以使用 interval 配合 min、max 强制设定刻度划分。在类目轴中无效。
    :param xaxis_pos:
        x 坐标轴位置,有'top','bottom'可选
    :param xaxis_label_textsize:
        x 坐标轴标签字体大小
    :param xaxis_label_textcolor:
        x 坐标轴标签字体颜色
    :param yaxis_margin:
        y 轴刻度标签与轴线之间的距离。默认为 8
    :param yaxis_name_size:
        y 轴名称体大小,默认为 14
    :param yaxis_name_gap:
        y 轴名称与轴线之间的距离,默认为 25
    :param yaxis_name:
        y 轴名称
    :param yaxis_name_pos:
        y 轴名称位置,有'start', 'middle','end'可选
    :param yaxis_rotate:
        y 轴刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标
        签之间重叠。默认为 0,即不旋转。旋转的角度从 -90 度到 90 度。
    :param yaxis_min:
        y 坐标轴刻度最小值,默认为自适应。使用特殊值 "dataMin" 可自定以数
        据中最小值为 y 轴最小值。
    :param yaxis_max:
        y 坐标轴刻度最大值,默认为自适应。使用特殊值 "dataMax" 可自定以数
        据中最小值为 y 轴最大值。
    :param yaxis_type:
        y 坐标轴类型
            'value':数值轴,适用于连续数据。
            'category':类目轴,适用于离散的类目数据。
            'log':对数轴。适用于对数数据。
    :param yaxis_interval:
        y 轴刻度标签的显示间隔,在类目轴中有效。默认会采用标签不重叠的策略间隔显示标签。
        设置成 0 强制显示所有标签。设置为 1,表示『隔一个标签显示一个标签』,
        如果值为 2,表示隔两个标签显示一个标签,以此类推
    :param yaxis_force_interval:
        强制设置 y 坐标轴分割间隔。如设置为 50 则刻度为 [0, 50, 150, ...],设置为 "auto"
        则只显示两个刻度。一般情况下不建议设置这个参数!!
        因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,
        这时候可以使用 interval 配合 min、max 强制设定刻度划分。在类目轴中无效。
    :param yaxis_pos:
        y 坐标轴位置,有'left','right'可选
    :param yaxis_label_textsize:
        y 坐标轴标签字体大小
    :param yaxis_label_textcolor:
        y 坐标轴标签字体颜色
    :param yaxis_formatter:
        y 轴标签格式器,如 '天',则 y 轴的标签为数据加'天'(3 天,4 天),默认为 ""
    :param is_convert:
        是否交换 x 轴与 y 轴
    :param is_xaxis_inverse:
        是否反向 x 坐标轴,默认为 False
    :param is_yaxis_inverse:
        是否反向 y 坐标轴,默认为 False
    :param is_xaxislabel_align:
        x 轴刻度线和标签是否对齐,默认为 False
    :param is_yaxislabel_align:
        y 轴刻度线和标签是否对齐,默认为 False
    :param is_xaxis_boundarygap:
        x 轴两边留白策略,适用于类目轴。类目轴中 boundaryGap 可以配置为 True 和 False。
        默认为 True,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)
        中间,即两边留白。
    :param is_yaxis_boundarygap:
        y 轴两边留白策略,适用于类目轴。类目轴中 boundaryGap 可以配置为 True 和 False。
        默认为 True,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)
        中间,即两边留白。
    :param is_xaxis_show:
        是否显示 x 轴
    :param is_yaxis_show:
        是否显示 y 轴
    :param is_splitline_show:
        是否显示 y 轴网格线,默认为 True。
    :param kwargs:
    """
    _xAxis = option.XAxis(
        name=xaxis_name,
        visibility=is_xaxis_show,
        name_location=xaxis_name_pos,
        name_gap=xaxis_name_gap,
        name_size=xaxis_name_size,
        position=xaxis_pos,
        boundary_gap=is_xaxis_boundarygap,
        label_alignment=is_xaxislabel_align,
        inverse=is_xaxis_inverse,
        value_range=[xaxis_min, xaxis_max],
        axis_type=xaxis_type,
        chart_type=type,
    )
    _xAxis["axisLabel"] = option.XAxisLabel(
        interval=xaxis_interval,
        rotate=xaxis_rotate,
        margin=xaxis_margin,
        text_size=xaxis_label_textsize,
        text_color=xaxis_label_textcolor,
        formatter=xaxis_formatter,
    )
    _yAxis = option.YAxis(
        name=yaxis_name,
        visibility=is_yaxis_show,
        name_location=yaxis_name_pos,
        name_gap=yaxis_name_gap,
        name_size=yaxis_name_size,
        position=yaxis_pos,
        boundary_gap=is_yaxis_boundarygap,
        label_alignment=is_yaxislabel_align,
        inverse=is_yaxis_inverse,
        value_range=[yaxis_min, yaxis_max],
        split_line=is_splitline_show,
        axis_type=yaxis_type,
        chart_type=type,
    )
    _yAxis["axisLabel"] = option.YAxisLabel(
        interval=yaxis_interval,
        rotate=yaxis_rotate,
        margin=yaxis_margin,
        text_size=yaxis_label_textsize,
        text_color=yaxis_label_textcolor,
        formatter=yaxis_formatter,
    )

    if is_convert:
        xaxis_type, yaxis_type = _yAxis['type'], _xAxis['type']
        _xAxis['type'] = xaxis_type
        _yAxis.update(data=x_axis, type=yaxis_type)
    else:
        _xAxis['data'] = x_axis

    # 强制分割数值轴,在多 x、y 轴中可以使用强制分割使标刻线对齐
    if xaxis_force_interval is not None:
        _xAxis['interval'] = xaxis_force_interval
    if yaxis_force_interval is not None:
        _yAxis['interval'] = yaxis_force_interval

    return [_xAxis], [_yAxis]