簡體   English   中英

如何使用 matplotlib 繪制字節數據列表

[英]how to plot a list of byte data with matplotlib

我有一堆從 telnet 機器讀入的數據......它是 x, y 數據,但它只是逗號分隔,如x1,y1,x2,y2,x3,y3,...

這是一個示例:

In[28] data[1:500]
Out[28]  b'3.00000000E+007,-5.26880000E+001,+3.09700000E+007,-5.75940000E+001,+3.19400000E+007,-5.56250000E+001,+3.29100000E+007,-5.69380000E+001,+3.38800000E+007,-5.40630000E+001,+3.48500000E+007,-5.36560000E+001,+3.58200000E+007,-5.67190000E+001,+3.67900000E+007,-5.51720000E+001,+3.77600000E+007,-5.99840000E+001,+3.87300000E+007,-5.58910000E+001,+3.97000000E+007,-5.35160000E+001,+4.06700000E+007,-5.48130000E+001,+4.16400000E+007,-5.52810000E+001,+4.26100000E+007,-5.64690000E+001,+4.35800000E+007,-5.3938'

我想將其繪制為帶有 matplot lib 的折線圖。 我已經嘗試使用struct包將其轉換為雙精度列表而不是字節列表,但是我遇到了很多問題......然后是如何處理科學記數法的問題......我想顯然保持它試圖傳達的大小,但我不能通過天真地將字節編碼交換為雙重編碼的含義來做到這一點。

我正在嘗試我通常會用 C 嘗試的各種事情,但我不禁想到 Python 有更好的方法!

我想我需要將x'sy's放入一個 numpy 數組中,並且在不丟失任何指數符號的情況下這樣做...

有什么想法嗎?

首先將您的數據轉換為數字,例如:

data = b'3.00000000E+007,-5.26880000E+001,+3.09700000E+007,-5.75940000E+001'
numbers = map(float, data.split(','))

現在將數組切片以分別獲取 x 和 y 數據並使用 matplotlib 繪制它

x = numbers[::2]
y = numbers[1::2]

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()

要讀取您的項目,一次兩個 (x1, y1),請嘗試以下操作: 在 python 中一次迭代列表的兩個值

然后(分治式),分別處理科學記數法。

一旦你得到了兩個數字列表,matplotlib 文檔就可以從那里獲取它。

這可能不是一個完整的答案,但它應該讓你有一個開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM