使用底图绘制 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
:
我正在尝试使用 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
: