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

如何在Plotly小提琴图中展示对数数据并保留原始数据轴与悬浮信息?

解决Plotly小提琴图对数数据集的轴与悬浮显示问题

直接设置xaxes(type='log')会导致Plotly小提琴图渲染异常,而提前做对数转换后又会显示转换值,要实现x轴和悬浮提示显示原始数据,可以通过以下方式处理:

核心方案

  1. 用对数转换后的数据绘制小提琴图,保证分布显示正常;
  2. 自定义x轴刻度标签,把对数转换值映射回原始值;
  3. 修改悬停模板,让悬浮提示显示原始值而非转换后的值。

完整代码示例

import numpy as np
import plotly.graph_objects as go

# 加载数据集
last_value = np.load('data.npy')
# 对数据做log10转换
log_transformed = np.log10(last_value)

fig = go.Figure()
fig.add_trace(go.Violin(
    x=log_transformed,
    spanmode='hard',
    orientation='h',
    side='positive',
    points=False,
    # 自定义悬浮模板:将对数转换值还原为原始值并显示
    hovertemplate='原始值: %{x:.2f}<extra></extra>'
))

# 自定义x轴刻度:用对数转换值作为刻度位置,显示对应的原始值
min_log = np.floor(log_transformed.min())
max_log = np.ceil(log_transformed.max())
# 生成刻度位置(对数转换后的值)
tick_positions = np.arange(min_log, max_log + 1)
# 生成对应的原始值文本
tick_labels = [f'{10**pos:.0f}' for pos in tick_positions]

fig.update_xaxes(
    tickvals=tick_positions,
    ticktext=tick_labels,
    title='原始值(对数刻度)'
)

fig.show()

细节调整

  • 如果数据的对数范围不是整数区间,可改用np.linspace()生成更贴合数据分布的刻度位置;
  • 悬浮模板中的%.2f可以根据原始数据的精度需求调整格式(比如%.0f显示整数,%.1e显示科学计数法)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:12:10