Scattergeo из Канады с использованием сюжета на питоне - PullRequest
0 голосов
/ 17 января 2019

Я хотел бы представить стратегию канадских магазинов на сюжетной карте. Я сделал это для американских магазинов. Я просто хочу повторить это для Канады. Я думаю, что location mode, scope и projection должны измениться, но я не знаю, с каким значением. Буду признателен за любую помощь.

def visualize_geo_store_canada(stores_info_df,
                               fig_name='store_strategy_Canada_map', title = 'Stores Strategy'):
    data = [ dict(
        type = 'scattergeo',
        ##### WHAT TO REPLACE? ########
        #locationmode = 'USA-states',
        ###############################
        lon = stores_info_df['LONGITUDE'],
        lat = stores_info_df['LATITUDE'],
        text = stores_info_df['STRATEGY'],
        mode = 'markers',
        marker = dict(
            colorscale= 'Jet',  
            color = stores_info_df['STRATEGY'],
            colorbar = dict(
                title = 'Strategy',
                titleside = 'top',
                tickmode = 'array',
            )

    ))]

    layout = dict(
        title = title,
        geo = dict(
            ##### WHAT TO REPLACE? ########
            #scope='usa',
            #projection=dict( type='albers usa' ),
            ###############################
            showland = True,
            landcolor = "rgb(250, 250, 250)",
            subunitcolor = "rgb(217, 217, 217)",
            countrycolor = "rgb(217, 217, 217)",
            countrywidth = 0.5,
            subunitwidth = 0.5
        ),
    )

   fig = dict(data=data, layout=layout)
   plotly.offline.iplot(fig, validate=False)

1 Ответ

0 голосов
/ 17 января 2019

Необходимо указать дополнительные параметры lataxis и lonaxis в geo словаре в layout (на основе this ). Такие параметры, как locationmode и scope, мне не помогли в таком случае.

Код:

# import all the necessaries libraries
from plotly import tools
import plotly.offline as py
import plotly.graph_objs as go
import pandas as pd
# your df
stores_info_df = pd.DataFrame({'LONGITUDE':[-60,-80,-100,-120],
                              'LATITUDE':[50,51,53,54],
                              'STRATEGY':['One','Two','Three','Four']})
# your function
def visualize_geo_store_canada(stores_info_df,
                               fig_name='store_strategy_Canada_map', title = 'Stores Strategy'):
    data = [ dict(
        type = 'scattergeo',
        ##### WHAT TO REPLACE? ########
        #locationmode = 'Canada',
        ###############################
        lon = stores_info_df['LONGITUDE'],
        lat = stores_info_df['LATITUDE'],
        text = stores_info_df['STRATEGY'],
        mode = 'markers',
        marker = dict(
            colorscale= 'Jet',  
            color = stores_info_df['STRATEGY'],
            colorbar = dict(
                title = 'Strategy',
                titleside = 'top',
                tickmode = 'array',
            )
    ))]
    layout = dict(
        title = title,
        geo = dict(
            ##### WHAT TO REPLACE? ########
            #scope='north-america',
            ###############################
            showland = True,
            # Add coordinates limits on a map
            lataxis = dict(range=[40,70]),
            lonaxis = dict(range=[-130,-55]),
            landcolor = "rgb(250, 250, 250)",
            subunitcolor = "rgb(217, 217, 217)",
            countrycolor = "rgb(217, 217, 217)",
            countrywidth = 0.5,
            subunitwidth = 0.5
        ),
    )
    fig = dict(data=data, layout=layout)
    py.plot(fig, validate=False)
# plot a plot
visualize_geo_store_canada(stores_info_df)

Выход:

Plot for Canada

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...