python - 基于python中的字节范围可视化文件
问题描述
我有描述二进制文件组成的数据。每个数据点以字节为单位指定开始和结束范围以及类型:
[0x046270, 0x057574, "type1"]
[0x057574, 0x05BF20, "type2"]
[0x05BF20, 0x05EF80, "type1"]
[0x05EF80, 0x05F050, "type2"]
我希望能够通过着色部分来可视化文件并获得类似于旧 Windows 磁盘碎片整理实用程序中可以看到的内容。
我曾尝试为此使用 matplotlib 的堆叠条形图,但我看到了一些问题,并认为我可能会为此目的滥用它。下面的图表类型是否有名称,或者是否有任何清晰的渲染方式?
解决方案
具有 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()
推荐阅读
- linux - 在 Linux 上使用 bazel 构建 tensorflow r1.12 后 libtensorflow.so 和标头的位置
- ruby - RSpec:使用`receive ...完全... with ... and_return ...`和不同的`with`参数
- java - Locale.getLanguage() 等于 String
- hibernate - 当我从 POST 方法更新它时,@CreationTimestamp 列设置为 null
- javascript - 选择元素上的占位符选项,默认选中
- java - 如何从具有 2 个子层到 listView 的火基实时数据中检索数据?
- angular - 如何动态实现包含 1-N 个其他组件的可重用角度组件?
- service-worker - SPA - 是否应该为所有 pwa 相关资源关闭服务器 http 缓存?
- java - 在 Springboot 中,我们可以从 application.yml 配置一个 LogstashSocketAppender
- python - Python - XML - LXML- 如何使用来自示例 XML 文件的相同 XML 树结构来创建另一个 XML 文件