一、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表达时,无法正常输出左边的刻度,如下图:
这个不知道是不是参数使用的有问题,从网上查看到的消息也有人遇到类似的问题。不过其不是用的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,
使用该方法处理后,输出的图形为:
同时对于刻度间的间隔还可以使用 min_interval 或 max_interval进行设置。