地理图不显示 x、y 轴 python

Geoplot not displaying x,y axis python

我正在尝试使用 geoplot 绘制旧金山县犯罪分布的热图。问题是当我使用 geoplot 的数据集绘制 SF 的地图时,x,y 轴没有出现。我在我的最终演示中使用了这张地图,所以我认为如果为观众显示坐标轴(经度和纬度作为坐标轴),它会更易读。我搜索了尽可能多的文档,并尝试使用 ax.axis('on') 但没有用。如果有任何建议,我将不胜感激。谢谢 (顺便说一句,我在 jupyter 上这样做) df 是我使用的数据框,其中包含 500k 犯罪记录,位置包含经度和纬度。

gdf1 = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude))
sf = gpd.read_file(gplt.datasets.get_path("san_francisco"))
count = gdf1
ax = gplt.polyplot(sf, projection=gcrs.AlbersEqualArea(),figsize=(10,10))
gplt.kdeplot(count, cmap="Reds", shade=True, clip=sf, ax=ax, cbar=True)

Geoplot 建立在 cartopy 之上,返回的轴对象看起来确实是普通的 cartopy GeoAxis 对象,因此您应该能够使用该库中可用的任何图形自定义。默认情况下,cartopy 图不包括轴 ticks/ticklabels,因为该库经常用于在投影中绘图,其中 x 和 y 值不对应于 lat/lon。

要在 cartopy 中添加网格线,请使用 ax.gridlines。这些将正确处理您的投影并在您的地图上绘制 lat/lon 线作为等高线。

来自 adding map gridlines and tick labels 上的文档:

ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)

关于网格线和自定义它们的方法有很多争论,但希望这能让您入门。

另一种可用的更多几何图形的方法是 mapbox 密度图。如果需要网格,可以添加额外的图层。

import requests
import pandas as pd
import plotly.express as px

df = pd.json_normalize(
    requests.get("https://data.sfgov.org/resource/wg3w-h783.json").json()
)

px.density_mapbox(
    df,
    lat="latitude",
    lon="longitude",
    radius=10,
    color_continuous_scale="reds",
    center=dict(
        lat=df["latitude"].astype(float).mean(),
        lon=df["longitude"].astype(float).mean(),
    ),
    zoom=10,
    mapbox_style="carto-positron",
).update_layout(margin={"t":0,"b":0,"l":300,"r":300})