バイナリデータをプロット

Plotting binary data in python – StackOverflow

数値をバイナリに変換して,各桁をバイナリで表すようなグラフが欲しい……

という事じゃないんだろうか.

まあ,違ったとしても,ここではそれを考えたい.

numpyを使うなら,「numpy.unpackbits」でバイナリデータに変換して,
「numpy.rot90」で回転させて欲しい形(各行が各桁を表す様な)にすれば良いと思う.

ここでは,ピュアに考える.

data = [1, 2, 4, 5, 9]
#['0001', '0010', '0100', '0101', '1001']

x = list(range(len(data)))
data_bin = [f'{x:04b}' for x in data]
y = [[int(e)+2*(3-r) for e in subli] 
     for r, subli in enumerate(zip(*data_bin))][::-1]

for subli in y:
    plt.step(x, subli)

FireShot Capture 295 - JupyterLab Alpha Preview - http___localhost_8888_lab

plt.step()はデフォルトはwhere=’pre’なので,

data = [1, 2, 4, 5, 9]
#['0001', '0010', '0100', '0101', '1001']

x = list(range(len(data)))
data_bin = [f'{x:04b}' for x in data]
y = [[int(e)+2*(3-r) for e in subli] 
     for r, subli in enumerate(zip(*data_bin))][::-1]

for subli in y:
    plt.step(x, subli, where='post')

FireShot Capture 296 - JupyterLab Alpha Preview - http___localhost_8888_lab

この方がビットが立ったな,って感じのグラフになる.

後はまあ軸とか適当に.

data = [1, 2, 4, 5, 9]
#['0001', '0010', '0100', '0101', '1001']

x = list(range(len(data)))
data_bin = [f'{x:04b}' for x in data]
y = [[int(e)+2*(3-r) for e in subli] 
     for r, subli in enumerate(zip(*data_bin))][::-1]

for subli in y:
    plt.step(x, subli, where='post')

plt.xticks([0.5, 1.5, 2.5, 3.5, 4.6], ('T1', 'T2', 'T3', 'T4', 'T5'))
plt.yticks([0.5, 2.5, 4.5, 6.5], ('D1', 'D2', 'D3', 'D4'))

FireShot Capture 297 - JupyterLab Alpha Preview - http___localhost_8888_lab

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中