Search code examples
pythonmatplotlibplotlyiplots

Not able to view US-states heatmap


I have written the following code to heat heatmap of US-States. But I am unable to get the output image in Google Colab.

State codes are two alphabet codes for a particular state of the US.

temp = pd.DataFrame(project_data.groupby("school_state")["project_is_approved"].apply(np.mean)).reset_index()

temp.columns = ['state_code', 'num_proposals']

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)']]

data = [ dict(
        type='choropleth',
        colorscale = scl,
        autocolorscale = False,
        locations = temp['state_code'],
        z = temp['num_proposals'].astype(float),
        locationmode = 'USA-states',
        text = temp['state_code'],
        marker = dict(line = dict (color = 'rgb(255,255,255)',width = 2)),
        colorbar = dict(title = "% of pro")
    ) ]

layout = dict(
        title = 'Project Proposals % of Acceptance Rate by US States',
        geo = dict(
            scope='usa',
            projection=dict( type='albers usa' ),
            showlakes = True,
            lakecolor = 'rgb(255, 255, 255)',
        ),
    )

fig = dict(data=data, layout=layout)

offline.iplot(fig, filename='us-map-heat-map')

I have imported following libraries:

from chart_studio import plotly
import plotly.offline as offline
import plotly.graph_objs as go
offline.init_notebook_mode()
from collections import Counter
import chart_studio.plotly as py

Solution

  • Try the following code with your data:
    (I tried putting your variables in the correct spots)

    choropleth = go.Choropleth(
        locations=temp['state_code'],
        locationmode='USA-states',
        z = temp['num_proposals'].astype(float),
        zmin = 0,
        zmax = max(temp['num_proposals'].astype(float)),
        colorscale=scl,
        autocolorscale=False,
        text='Proposals', 
        marker_line_color='white',
        colorbar_title="% Acceptance Rate"
    )
    fig = go.Figure(data=choropleth)
    
    fig.update_layout(
        title_text='Project Proposals % of Acceptance Rate by US States',
        geo = dict(
            scope='usa',
            projection=go.layout.geo.Projection(type = 'albers usa'),
            showlakes=True,
            lakecolor='rgb(255, 255, 255)'),
    )
    
    fig.show()
    

    This code works by creating the Plotly Choropleth Graph Object with your data, then loading that object into a Plotly Figure Graph Object, then updating the layout (for proper titles and zooms), and finally displaying the figure.