如何使用matplotlib绘制20字节的十六进制值

问题描述 投票:0回答:1

我正在尝试使用matplotlib绘制20字节十六进制值的数据框。数据框中的值未排序。使用matplotlib时,这些值被视为对象/十六进制字符串。因此,例如,如果我连续有0x0010...00x0000...0,则将它们绘制为较大的值,首先是(0x0010...0),较小的值是第二(0x000...0),这仅是因为它们在数据帧中以这种方式排序。我已经尝试将值转换为int,这显然是因为大小,它们不适合64位整数。还尝试将它们转换为字节数组,如下所示:

df.key_no.apply(lambda x: bytearray.fromhex(x))

(["key_no"是具有20字节十六进制字符串的列。)这里的转换似乎也不起作用。我尝试在转换后打印该列,它仍将值dtype标记为对象,并显示相同的20字节十六进制值。

如何解决此问题,使绘图考虑20字节十六进制的值?

python python-3.x matplotlib type-conversion hex
1个回答
0
投票

我的建议是将其转换为python int(不会丢失精度),然后转换为浮点数(它将丢失精度,但绘图无论如何都不会显示太多精度)。

这里是代码:

data = ['0xA00000000000000f0001', '0xF00000000000000F0001', '0x00000000000000000001']
df = pd.DataFrame(data)

df[1] = df[0].apply( lambda x: float(int(x, 16)))

df[1].plot()

以及生成的数据框和图:

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.