使用basemap在Python中绘制税务旅行

使用basemap在Python中绘制税务旅行,python,matplotlib,heatmap,matplotlib-basemap,Python,Matplotlib,Heatmap,Matplotlib Basemap,我试图使用Basemap函数创建一个类似于图中所示的图,但使用的是数据 这是我的代码: 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_t

我试图使用Basemap函数创建一个类似于图中所示的图,但使用的是数据

这是我的代码:

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)
然而,我的结果却很奇怪

我想知道我错过了什么


谢谢。

看起来数据包含的数据比底图图范围内的数据多得多。 通过使用更多的网格点,例如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()
使用更多的网格点可以获得更高的分辨率。例如,gridsize=1000: