对数刻度倒数[0,0.9,0.99,0.999]

问题描述

我正试图绘制等效于hdrhistogram的图形,以分析某些延迟数据,但是这样做似乎并非易事,因为它实际上需要对数刻度的倒数。

即我要获得的刻度是沿着[0,0.9,0.99,0.999,0.9999]

的刻度线

我正在通过Altair库为python编写所有代码,如果有帮助的话。

解决方法

在Altair中没有简单的方法,因为Vega不支持此操作(请参阅此处已有两年的功能请求:https://github.com/vega/vega/issues/1277

但是您可以通过转换数据,使用标准对数标度然后计算新的刻度标签来反映基础数据来解决它。它可能看起来像这样:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'x': range(5),'y': [0.0001,0.9,0.99,0.999,0.9999],})

alt.Chart(df).transform_calculate(
  z = 1 - alt.datum.y  
).mark_line().encode(
  x='x:Q',y=alt.Y(
    'z:Q',scale=alt.Scale(type='log',reverse=True)),axis=alt.Axis(
      values=[1,0.1,0.01,0.001,0.0001,0.00001],labelExpr="1 - datum.value"),)

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...