You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Altair中配置从100到0的反向对数横轴?

在Altair中实现反转对数横轴的HdrHistogram图表

要实现横轴为从100到0的对数轴(让100附近数值拥有更高分辨率),可以通过以下步骤配置:

核心配置要点

  • 使用对数刻度,但需避开0值(对数函数定义域不包含0),可将横轴数据下限设为极小值(如1e-6),后续通过轴标签将其显示为0。
  • 反转轴方向,让100位于左侧,0位于右侧。
  • 自定义轴刻度与标签,匹配HdrHistogram的显示风格。

代码示例

假设我们有一组百分位数对应指标的数据集,示例代码如下:

import altair as alt
import pandas as pd

# 构造示例数据:百分位从极小值(近似0)到100,对应指标值
data = pd.DataFrame({
    "percentile": [1e-6, 0.1, 1, 10, 50, 90, 99, 99.9, 100],
    "metric": [0.1, 0.2, 0.5, 2, 5, 10, 20, 50, 100]
})

chart = alt.Chart(data).mark_area(interpolate="step-after", fill="#4c78a8", opacity=0.7).encode(
    # 横轴:百分位,对数刻度+反转方向,自定义刻度标签
    x=alt.X("percentile:Q",
            title="百分位",
            scale={"type": "log", "domain": [1e-6, 100], "reverse": True},
            axis=alt.Axis(
                values=[1e-6, 0.1, 1, 10, 50, 90, 99, 99.9, 100],
                labels=["0", "0.1", "1", "10", "50", "90", "99", "99.9", "100"],
                tickCount=10
            )),
    # 纵轴:对应指标值(根据你的实际数据调整)
    y=alt.Y("metric:Q", title="指标值"),
    tooltip=[alt.Tooltip("percentile:Q", title="百分位"), alt.Tooltip("metric:Q", title="指标值")]
).properties(
    width=600,
    height=400,
    title="HdrHistogram风格分布图表"
)

chart.show()

关键细节说明

  • 对数刻度与反转:通过scale={"type": "log", "reverse": True}实现横轴从100到0的对数分布,确保100附近的精细数值(如99、99.9等百分位)获得更高分辨率。
  • 0值处理:用1e-6近似0,再通过axis.labels将该刻度的显示文本改为0,兼顾对数函数的定义域与视觉展示需求。
  • 阶梯插值:mark_area(interpolate="step-after")匹配HdrHistogram的阶梯式面积图风格,贴合这类直方图的展示逻辑。

内容的提问来源于stack exchange,提问作者Vadim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:24:48