反对数刻度 [0,0.9,0.99,0.999]
Inverse logarithmic scale [0,0.9,0.99,0.999]
我正在尝试绘制 hdrhistogram 的等价物来分析一些延迟数据,但是这样做似乎很重要,因为它需要本质上是对数刻度的倒数。
即我想要得到的是一个刻度线:[0,0.9, 0.99, 0.999, 0.9999]
我正在通过 Altair 库为 python 编写所有代码,如果有任何帮助的话。
在 Altair 中没有简单的方法可以做到这一点,因为它在 Vega 中不受支持(请参阅此处的 two-year-old 功能请求: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"),
)
我正在尝试绘制 hdrhistogram 的等价物来分析一些延迟数据,但是这样做似乎很重要,因为它需要本质上是对数刻度的倒数。
即我想要得到的是一个刻度线:[0,0.9, 0.99, 0.999, 0.9999]
我正在通过 Altair 库为 python 编写所有代码,如果有任何帮助的话。
在 Altair 中没有简单的方法可以做到这一点,因为它在 Vega 中不受支持(请参阅此处的 two-year-old 功能请求: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"),
)