首页 > 解决方案 > 基于python中的字节范围可视化文件

问题描述

我有描述二进制文件组成的数据。每个数据点以字节为单位指定开始和结束范围以及类型:

[0x046270, 0x057574, "type1"]
[0x057574, 0x05BF20, "type2"]
[0x05BF20, 0x05EF80, "type1"]
[0x05EF80, 0x05F050, "type2"]

我希望能够通过着色部分来可视化文件并获得类似于旧 Windows 磁盘碎片整理实用程序中可以看到的内容。

Windows 磁盘碎片整理程序

我曾尝试为此使用 matplotlib 的堆叠条形图,但我看到了一些问题,并认为我可能会为此目的滥用它。下面的图表类型是否有名称,或者是否有任何清晰的渲染方式?

标签: pythonmatplotlibdata-visualization

解决方案


具有 256 个扇区图像的基本堆叠图。要让它像呈现的图像一样有两层,你需要添加ax2或改变数据的结构有一个过程很繁重,所以需要一些时间来输出。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import random
FAT_No = np.arange(0, pow(2,8))
sector_st = random.choices(['type1','type2','type3','type4'], k=256)
value = [1]*256
before = ['before']*256
df = pd.DataFrame({'before':before,'fat_no':FAT_No, 'sector':sector_st, 'value':value})

df
    before  fat_no  sector  value
0   before  0   type1   1
1   before  1   type1   1
2   before  2   type4   1
3   before  3   type2   1
4   before  4   type2   1
... ... ... ... ...
251 before  251 type2   1
252 before  252 type2   1
253 before  253 type3   1
254 before  254 type2   1
255 before  255 type4   1

fig = plt.figure(figsize=(16,3),dpi=144)
ax = fig.add_subplot(111)

color = {'type1':'b','type2':'g','type3':'r','type4':'w'}

for i in range(len(df)):
    ax.barh(df['before'], df['value'].iloc[i], color=color[df['sector'].iloc[i]], left=df['value'].iloc[:i].sum())

plt.show()

在此处输入图像描述


推荐阅读