您好,我對使用 Python 進行資料可視化完全陌生,我有這個 json 回應:
{
"max365": 83.87,
"current365": 83.87,
"min365": 75.29,
"max180": 76.94,
"current180": 76.94,
"min180": 56.43,
"max90": 98.66,
"current90": 98.66,
"min90": 63.29,
"max30": 138.14,
"current30": 136,
"min30": 66.77,
"max14": 156.93,
"current14": 122.88,
"min14": 72.56,
"max7": 168.9,
"current7": 122.68,
"min7": 74.08,
"max0": 267.5,
"current0": 81.28,
"min0": 36.07 }
max,current并且min是我想在多線圖上繪制的線,但我正在努力處理這種日期/時間分組格式的資料和回應。
我在這里添加了一個圖表的螢屏截圖,我實際上是在嘗試逆向工程:

我已經看到了一些關于通用折線圖的有用帖子,但我在這里的問題主要是將所有最大/當前/分鐘鏈接到它們自己的線上,而我有 0/7/14/30/90/180/365 分組/相交每個他們在回應中。
希望我已經解釋得足夠好。任何幫助將不勝感激。
uj5u.com熱心網友回復:
Python 標準庫有一個
……這里是代碼——我想強調一下,我們需要拆分標簽以獲得真正的標簽和序列資訊(?是數字時間嗎?我做了一個有根據的猜測),所以對于每個標簽,我們構造一個串列串列,每個元素一個時間和一個值,然后我們對每個標記串列中的串列進行排序,最后繪制三行。
from matplotlib.pyplot import subplots
from json import loads
def split_num(s):
num = []
for c in reversed(s):
if c.isdigit():
num = c
else:
break
if num:
return s[:-len(num)], ''.join(reversed(num))
else:
return s, ''
json = '''{
"max365": 83.87,"current365": 83.87,"min365": 75.29,
"max180": 76.94,"current180": 76.94,"min180": 56.43,
"max90": 98.66,"current90": 98.66,"min90": 63.29,
"max30": 138.14,"current30": 136,"min30": 66.77,
"max14": 156.93,"current14": 122.88,"min14": 72.56,
"max7": 168.9,"current7": 122.68,"min7": 74.08,
"max0": 267.5,"current0": 81.28,"min0": 36.07 }'''
jdict = loads(json)
data = {}
for k in jdict:
name, num = split_num(k)
data[name] = data.setdefault(name, []) [[int(num), float(jdict[k])]]
for k in data: data[k] = sorted(data[k])
fig, ax = subplots()
for k in data:
ax.plot(*zip(*data[k]), label=k)
ax.legend()
fig.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406720.html
標籤:
上一篇:根據情節選擇復制檔案
