Как разместить аннотации на карте Plotly с использованием Python без координат широты и долготы - PullRequest
0 голосов
/ 24 января 2019

Я построил очень простую картографическую карту, используя Python / Plotly, в которой в качестве местоположений используются сокращения состояний.Я пытаюсь добавить аннотации на карту, однако все учебники, которые я могу найти, используют либо позицию x / y, либо позицию lat / long.

В идеале я хотел бы, чтобы аннотация «заполняла» состояние, которое функционирует как событие щелчка (, как предлагается во втором ответе здесь - это альтернатива использованию JS, потому что яеще не узнали этого), однако, похоже, что решением будет большая аннотация по состоянию.

Итак, мой вопрос: есть ли способ связать положение аннотации с местоположением состояния без использования lat / long?Или мне придется создавать широты / долготы для каждого штата?

Вот мой код:

import pandas as pd
import plotly.plotly as py

d = {'state': ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY",
               "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND",
               "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"],
     'change': [-0.01, -0.17, -0.03, -0.02, -0.08, -0.03, -0.01, -0.17, -0.07, -0.11, -0.16, 0.20, -0.05, -0.07, -0.08,
                -0.02, -0.04, -0.12, -0.03, -0.14, -0.01, -0.05, 0.09, -0.04, -0.13, 0.01, -1.75, -0.13, -0.01, -0.08,
                -0.59, -0.05, -0.02, 0.45, 0.02, -0.05, -0.17, 0.11, -0.12, -0.07, 0.75, 0.01, -0.12, -0.22, 0.32,
                -0.02, -0.03, 0.00, -0.18, -0.17]}
df = pd.DataFrame(data=d)

scl = [0.0, "rgb(242,240,247)"], [0.2, "rgb(218,218,235)"], [0.4, "rgb(188,189,220)"], 
      [0.6, "rgb(158,154,200)"], [0.8, "rgb(117,107,177)"], [1.0, "rgb(84,39,143)],

# df['text'] = df['state']

data = [dict(
    type='choropleth',
    colorscale=scl,
    autocolorscale=False,
    locations=df['state'],
    z=df['change'].astype(float),
    locationmode='USA-states',
    # text=df['text'],
    marker=dict(
        line=dict(
            color='rgb(255,255,255)',
            width=2
        )),
    colorbar=dict(
        title="Change in" + "<br>" + "Crime Rate")
)]


layout = dict(
    title='Change in Juvenile Crime Rates, 2016-2017',
    geo=dict(
        scope='usa',
        projection=dict(type='albers usa'),
        showlakes=True,
        lakecolor='rgb(255,255,255)'),
)

fig = dict(data=data, layout=layout)
py.plot(fig, filename='jj-crimerate-map')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...