0

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

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)

在此处输入图像描述

4

2 回答 2

0

Geoplot 建立在 cartopy 之上,返回的轴对象似乎确实是普通的 cartopyGeoAxis对象,因此您应该能够使用该库中可用的任何图形自定义。默认情况下,cartopy 绘图不包括轴刻度/刻度标签,因为该库经常用于在投影中绘图,其中 x 和 y 值不对应于纬度/经度。

要在 cartopy 中添加网格线,请使用ax.gridlines. 这些将正确处理您的投影并将纬度/经度线绘制为地图上的轮廓。

从关于添加地图网格线和刻度标签的文档:

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

有很多关于网格线的论据和自定义它们的方法,但希望这能让你开始。

于 2021-12-09T11:16:39.317 回答
0

可以使用更多几何图形的另一种方法是 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})

在此处输入图像描述

于 2021-12-09T11:32:38.437 回答