【问题标题】:Plotly: How to display Axis ticks in hexadecimal?Plotly:如何以十六进制显示轴刻度?
【发布时间】:2020-05-06 01:39:44
【问题描述】:

在 plotly 中,有没有办法以十六进制格式显示给定轴的刻度,而不是一个大的科学数字?这对于绘制地址跟踪很有用

【问题讨论】:

    标签: python plotly


    【解决方案1】:

    你可以用[str(hex(elem)) for elem in [1000000, ..., 5000000]做到这一点

    剧情:

    需要注意的一些细节:

    据我所知,您必须使用字符串类型的列表来获得所需的行为。 [1000000, 2000000, 3000000, 4000000, 5000000] 等值将默认显示为:

    即使[str(hex(elem)) for elem in xVals] 也会发生这种情况。因此,您必须明确指示将刻度显示为字符串:

    fig.update_xaxes(tickmode = 'array',
                     tickvals = xHex,
                     ticktext= xHex)
    

    完整代码:

    # imports
    import plotly.express as px
    import plotly.graph_objs as go
    import pandas as pd
    import numpy as np
    
    import plotly.express as px
    
    xVals = [1000000, 2000000, 3000000, 4000000, 5000000]
    
    xHex = [str(hex(elem)) for elem in xVals]
    
    fig = px.scatter(x=xHex, y=[0, 1, 4, 9, 16])
    fig.show()
    
    fig.update_xaxes(tickmode = 'array',
                     tickvals = xHex,
                     ticktext= xHex)
    

    【讨论】:

    • 感谢@vestland 的回答!您的解决方案稍作修改就对我有用。由于我有数百万个数据点,我只需要采样几个值:xHex = [str(hex(int(elem))) for elem in np.linspace(xVals.min(), xVals.max(), nticks)]
    • 其实,我如何在放大或缩小时动态更新刻度?使用当前的解决方案,刻度是静态的。
    • @DiastolicDuke 实际上我不确定!请考虑将其作为自己的问题发布。也许其中一位开发者会给出答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2014-03-11
    相关资源
    最近更新 更多