Scattergeo of Canada using plotly in python

Viewed 2931

I would like to visualize the strategy of Canadian stores on plotly map. I have done this for American stores. I just want to replicate it for Canada. I think location mode, scope and projection should change, but I do not know with which value. I would appreciate any help.

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 Answers

You need to specify to additional parameters lataxis and lonaxis in geo dictionary in layout (based on this). Such parameters such locationmode and scope not helped for me in that case.

Code:

# 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)

Output:

Plot for Canada

Related