我有一個由財務股票ID [0,1400]和時間戳[0,1800]組成的數據集。對於給定的ID,它既可以有也可以沒有給定時間戳的數據。繪製一個圖表,顯示一組列表中存在一個範圍內的值
我已經創建了一個字典,其中每個鍵是一個ID,每個值都是該ID具有數據的所有時間戳的列表。
我現在想繪製一個圖表,每行對應一個ID,每列對應一個時間戳。如果ID i
具有時間戳記j
(if j in dict[i]
)的數據,則圖表的每個單元格[i, j]
都將被標記爲綠色,如果不存在,則爲紅色。
這裏有一個例子我在Excel中手動生產:
可以通過這種或matplotlip一些其他圖書館做什麼?
由於圖表大小爲1400x1800,因此單元格可能非常小。我正在嘗試對數據進行重新排序,以便相鄰ID之間相交的綠色單元格的數量達到最大化,因此此圖表可以讓我提供可視化的數據集跨越/交叉的完成情況。爲了提供一些數據,我只是遍歷我的字典中的前20個ID,並打印出ID和它的時間戳列表。 each line is in the form of ID [list of IDs timestamps]
編輯:
這是我在一個小規模的數據的例子的第一次嘗試。雖然這確實達到了我所要做的,但這是一個非常暴力的解決方案,所以有關改進的任何建議都將值得讚賞。
import matplotlib.pyplot as plt
import pandas as pd
TSs = [0, 1, 2, 3, 4, 5]
ID_TS = {0: [1, 2, 3], 1: [2, 3, 4, 5]}
df = pd.DataFrame(index=ID_TS.keys(), columns=TSs)
for ID, TS in ID_TS.items():
bools = []
for i in TSs:
if i in TS:
bools.append(True)
else:
bools.append(False)
df.loc[ID] = bools
plt.imshow(df, cmap='hot', interpolation='nearest')
plt.show()
你能提供一些示例數據? – akilat90
這個數據集非常龐大,不僅僅是ID和時間戳,還有一些困難。我可以打印出來並提供前20個ID及其相應的時間戳列表? – KOB
是的,[MCVE](https://stackoverflow.com/help/mcve) – akilat90