как добавить "северную стрелку" на карту геопанды - PullRequest
1 голос
/ 25 сентября 2019

Я создал карту с помощью геопанд, но я не могу добавить «Северную стрелу» на карту.

После создания карты я попытался добавить «Северную стрелу» с помощью matplotlib.image.модуль и пробовал разные способы (см. пример ниже), но ни один из них не дал хорошего результата.Я ищу лучший код, который может добавить хорошую "стрелку севера на карту"

import matplotlib.image as img

from matplotlib.offsetbox import TextArea, DrawingArea, OffsetImage, 
    AnnotationBbox

im=img.imread(r'C:\Users\jnisengw\Dropbox\2019\Data 
    Science\QGIS\north_arrow1.png')

imagebox = OffsetImage(im,zoom=0.27)

ab = AnnotationBbox(imagebox, (598500,4699000))

ax.add_artist(ab)

1 Ответ

2 голосов
/ 26 сентября 2019

Если вам нужно только добавить простую стрелку, вы можете также рассмотреть метод annotate() .

import geopandas as gpd
import matplotlib.pyplot as plt

gdf = gpd.read_file(gpd.datasets.get_path('nybb'))

fig, ax = plt.subplots(figsize=(6, 6))
gdf.plot(ax=ax)

x, y, arrow_length = 0.5, 0.5, 0.1
ax.annotate('N', xy=(x, y), xytext=(x, y-arrow_length),
            arrowprops=dict(facecolor='black', width=5, headwidth=15),
            ha='center', va='center', fontsize=20,
            xycoords=ax.transAxes)

enter image description here

Примечания. Когда вы передаете xycoords=ax.transAxes, координаты x, y нормализуются, а x, y = 0.5, 0.5 означает, что вы положили стрелку в середину карты.

...