2017-07-25 5 views
0

Basemap関数を使用してhereのようなプロットを作成しようとしていますが、thisデータを使用しています。ベースマップを使用してPythonで税引きをプロットする

これは私のコードです:

west, south, east, north = -74.26, 40.50, -73.70, 40.92 

fig = plt.figure(figsize=(14,10)) 

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north, 
      llcrnrlon=west, urcrnrlon=east, lat_ts=south, resolution='c') 
x, y = m(df['pickup_longitude'].values, df['pickup_latitude'].values) 
m.hexbin(x, y, gridsize=1900, cmap=cm.YlOrRd_r) 

しかし、私の結果は奇妙に他なりません。

enter image description here

私が欠けているかと思っています。

ありがとうございました。

答えて

1

データは、ベースマッププロット内の範囲よりもはるかに多くのデータを含んでいるようです。
さらに多くのグリッドポイントを使用して、目的のプロットを取得します。 gridsize=10000。しかし、これは多くのメモリを必要とします。

おそらく、データフレームから地図に表示される範囲の値を選択する方がよいでしょう。より多くのグリッド点を使用して

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

df = pd.read_csv("train.csv") 
west, south, east, north = -74.26, 40.50, -73.70, 40.92 
df = df[(df['pickup_longitude'] > west) & (df['pickup_longitude'] < east)] 
df = df[(df['pickup_latitude'] > south) & (df['pickup_latitude'] < north)] 

fig = plt.figure(figsize=(14,8)) 

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north, 
      llcrnrlon=west, urcrnrlon=east, lat_ts=south, resolution='c') 
x, y = m(df['pickup_longitude'].values, df['pickup_latitude'].values) 
m.hexbin(x, y, gridsize=100, bins='log', cmap=cm.YlOrRd_r, lw=0.4) 

plt.show() 

enter image description here

その後、さらに微細な解像度が可能になります。例えば。 gridsize=1000

enter image description here

関連する問題