pyecharts y轴不从零开始与min值的应用

一、pyechart刻度不从0开始

一些监控数据基本上在固定在某一个值附近变化不会太大的,尤其是一些行情类的数据,不可能今天是10,明天变0或负值,基本其就是这个值左右波动。遇到这种情况,如果监控图还是从0开始计算的话,很难观察到其抖动情况。这时候就考虑取其一起时间内的最小值为y轴的起始值。而从echarts官方的文档上来看其是支持min、max参数作为起始或终点值的。

echart官方说明文档参考:https://www.echartsjs.com/zh/option.html#yAxis.min

pyechart关于该项值的帮助信息为:

min_: Union[int, float, str, NoneType] = None
max_: Union[int, float, str, NoneType] = None

二、遇到的问题

在配置的时候发现使用int数值是可以正常输出图形的,当使用str min表达时,无法正常输出左边的刻度,如下图:

echart-min

这个不知道是不是参数使用的有问题,从网上查看到的消息也有人遇到类似的问题。不过其不是用的pyecharts,而是用的echarts,页面为:Echarts中y轴无法设置max,min值? ,其给出的方法是换用最新的echarts.min.js 文件。这个我有尝试更换,发现也不能解决。

代码如下:

line_price = (
    Line()
    .add_xaxis(xaxis_data=list(x_data))
    .add_yaxis(
        series_name="开",
        y_axis=list(df['open'].values),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="收",
        y_axis=list(df['close'].values),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="高",
        y_axis=list(df['high'].values),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="低",
        y_axis=list(df['low'].values),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        tooltip_opts=opts.TooltipOpts(
            is_show=True, trigger="axis", axis_pointer_type="cross",
        ),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            #min_=26,
            min_="min",
            #max_="max",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(
            type_="category",
            boundary_gap=False,
            axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
        ),
        #legend_opts=opts.LegendOpts(pos_left="3%",orient="vertical"),
    )
)

三、我的解决办法

上面的代码中,如果把min=”min”换成min=26就可以正常显示。既然如此,可以通过使用python本身计算出最小值,把最小值做为一个变量传过去就行了。因为我测试用的数据是pandas类型,所以这里直接使用如下代码搞定:

minval = df['low'].min()
在pyecharts调用处改为:
min = minval,

使用该方法处理后,输出的图形为:

pyechart-minval

同时对于刻度间的间隔还可以使用 min_interval 或 max_interval进行设置。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注