Plotly.py:强制轴单位为千 (k) 而不是百万 (M)

Posted

技术标签:

【中文标题】Plotly.py:强制轴单位为千 (k) 而不是百万 (M)【英文标题】:Plotly.py: Force axis units to thousands (k) instead of millions (M) 【发布时间】:2020-08-10 18:18:58 【问题描述】:

由于我的 x 轴上的数字有点大,它们以百万为单位显示(即 25.8512M)。但是,我想强制格式以千为单位显示(即 25,851.2k)。

import plotly.graph_objects as go

fig = go.Figure(data = [go.Scatter(x = [25.851e6, 25.852e6], y = [0, 1])])
    
fig.show()

按照SO question 和d-3 format API reference 中的建议,我尝试将轴tickformat 设置为',.6s',例如,但没有运气。

有什么建议吗?

【问题讨论】:

【参考方案1】:

似乎没有办法在 Plotly 中完成你想要的(看看这个 similar question 要求将十亿“B”格式化为数百万“M”)

我能想到的最佳解决方案是将您的数据从数百万转换为数千,添加字母“k”,并将此字符串列表用作tickvalues。不是很优雅,但希望它能完成你想要的。

import plotly.graph_objects as go

vals_in_millions = [25.851e6, 25.852e6]
fig = go.Figure(data = [go.Scatter(x = vals_in_millions, y = [0, 1])])

def convert_million_to_thousands(values):
    return [str(num/1000)+'k' for num in values]

fig.update_layout(
    xaxis = dict(
        tickmode = 'array',
        tickvals = vals_in_millions,
        ticktext = convert_million_to_thousands(vals_in_millions)
    )
)

fig.show()

【讨论】:

感谢这个创造性的解决方案!是的,我看过那个线程。不幸的是,这将意味着失去缩放和其他问题的解决方案。就我而言,我正在处理数千个数据点,因此从数字到因子的这种转换对我来说并不是一个真正的选择。 啊,我明白了。是的,我觉得这个解决方案不可推广,但如果我能想到任何事情,我会更新我的答案。如果您想出任何办法,请也发布您的解决方案,因为如果有任何解决方法可以解决这个问题,我会很好奇。祝你好运!

以上是关于Plotly.py:强制轴单位为千 (k) 而不是百万 (M)的主要内容,如果未能解决你的问题,请参考以下文章

echart设置数据轴单位到正上方,图片拐点,标注,图标图例,柱体上写字

将配置模式添加到 Plotly.Py 离线 - 模式栏

Plotly.py 添加本地文件的链接

如何在 s-s-rS 报告中设置动态轴单位?

d3.js 格式轴统一以百万为单位

python是不可视化工具吗