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)的主要内容,如果未能解决你的问题,请参考以下文章