簡體   English   中英

嘗試 plot 數據點在 BASEMAP (Python)

[英]Trying to plot DATA POINTS on BASEMAP (Python)

我有一些關於特內里費島一些站點的氣象數據(這個Dataframe在島上的某些點有緯度,經度和溫度)(數據來源是AEMET開放數據,所以他們應該是值得信賴的)

我已經成功繪制了底圖,但是當我想 plot 將我的 Dataframe 中的點放在底圖上時,這真的很奇怪。
這是我擁有的數據:

在此處輸入圖像描述

我改變了順序,所以當我使用 imshow 時,順序是 x、y、溫度,其中 x 是緯度,y 是經度。

我寫給 plot map:

m = Basemap(llcrnrlon=-17,llcrnrlat=27.8,urcrnrlon=-16,urcrnrlat=28.7,resolution='i',projection='merc')


im = m.imshow(temp, cmap='BuPu')


cbi=plt.colorbar(im,shrink=0.7,format='%.1f')


plt.show()

結果給了我:

在此處輸入圖像描述

但是,我想 plot 只指向它們的位置,例如,如果該點位於坐標 x,y 中,它應該只在 map 中的這個 position 上出現一點點。

有幫手嗎?

謝謝!

檢查此代碼:

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

df = pd.read_csv('data.csv')

m = Basemap(llcrnrlon = -17, llcrnrlat = 27.8, urcrnrlon = -16, urcrnrlat = 28.7, resolution = 'i', projection = 'merc')
m.drawcoastlines(color = 'black')

x, y = m(list(df['x']), list(df['y']))
m.scatter(x, y,
          c = df['temperatura'],
          s = 100,
          cmap = 'RdBu_r')

plt.colorbar()
plt.show()

這給出了這個 map:

在此處輸入圖像描述

您使用imshow() ,但此功能對於從NxM矩陣繪制圖像很有用,因此您將始終得到一個彩色矩形,就像在您的紫色圖像中一樣。
你有一個x - y ( lon - lat ) 坐標格式的數據,所以你可以 plot 散點圖,顯示 map 上那些點的溫度,就像我的代碼一樣,這些溫度是在哪里測量的。
如果你想要一個分布式彩色 map (技術術語是溫度場),像這樣:

在此處輸入圖像描述

您需要像meshgrid這樣的分布式數據。

暫無
暫無

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

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