簡體   English   中英

python matplotlib將xy數據對作為圖像繪制

[英]python matplotlib plot xy data pairs as image

我有一個大型數據集,格式為x,y,value1,value2 .... value#是該變量在x,y位置的值。 從csv文件讀取數據,其中xy值按半隨機順序。 xy值不在直線網格上。 我擁有大約數百萬個數據點。

我想做的是創建value#變量的圖像。

有內置的機制可以做到這一點嗎? 如果沒有內置機制,如何以正確的順序構建兩個vaule#數組。

您只有x和y的單個實例嗎? 您的所有值#是否都相等? 如果是這種情況,這對您來說會容易得多。 據我所知,沒有簡單的方法告訴imshow做到這一點,但希望這里的其他人比我更了解這一點。 您可能需要重組數據。 如果您要使用大型數據集,那么我將盡可能多地了解Python的Pandas軟件包。 與R一樣,它允許創建數據幀。 我認為imshow需要將您的數據按x乘以y的形狀,並將您的value#用作單元格值。 這是使用熊貓的示例。 可能有一種更為優雅的方法可以解決此問題,但是您應該明白這一點。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame(columns=['x','y','data_value'])
df['x'] = [1,2,1,2]
df['y'] = [1,1,2,2]
df['data_value'] = [1,2,3,4]

print(df) # so you see what's going on

df2 = pd.DataFrame(columns=df['x'].unique(), index = df['y'].unique())

print(df2) # so you see what's going on

# making x columns and y rows
for i in df2.index:
    for j in df2.columns:
        df2.ix[i,j] = (df[(df['y']==i) & (df['x']==j)]['data_value']).values[0]

print(df2)

哦,要作圖(imshow不喜歡這里的整數)

plt.imshow(np.array(df2.astype(float)))
plt.show()

暫無
暫無

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

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