使用底图绘制 Python 中的税收行程

Using basemap to plot tax trips in Python

我正在尝试使用 Basemap 函数创建一个类似于显示 here, but using this 数据的图。

这是我的代码:

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)

然而,我的结果很奇怪。

我想知道我错过了什么。

谢谢。

似乎数据包含的数据比 Basemap 图中范围内的数据多得多。
您将通过使用更多的网格点来获得所需的图,例如gridsize=10000。然而,这将消耗大量内存。

更好的选择可能是首先从数据框中 select 那些在地图中显示范围内的值。

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()

使用更多的网格点可以实现更精细的分辨率。例如。 gridsize=1000: