He tenido problemas con un mapa de coropletas mundiales usando plotly en Jupyter. Una vez que el valor supera los 1000, el mapa sombrea ese país como id, no hay datos. Revisé dos veces los códigos de país y todos son correctos. Creo que el problema tiene que ver con la leyenda porque solo muestra hasta 1000, pero no estoy seguro de cómo cambiar eso. Seguí los documentos en https://plot.ly/python/choropleth-maps/ para llegar a donde estoy ahora. Cualquier ayuda sería apreciada. Aquí hay una instantánea de mis datos.

        number  CODE   COUNTRY
     0  1146    USA    United States
     1  1450    CAN    Canada
     2  54      CRI    Costa Rica
     3  920     AUS    Australia

Aquí está mi código hasta ahora

fig = go.Figure(data=go.Choropleth(
    locations = df['CODE'],
    locationmode = "ISO-3",
    z = df['number'],
    text = df['COUNTRY'],
    colorscale = 'Reds'
))

fig.update_layout(title_text="McDonald's per Country")

fig.show()

Y aquí está el resultado (el mapa está algo cortado, pero entiendes la idea) Plot

1
Jack Hanson 22 oct. 2019 a las 19:21

1 respuesta

La mejor respuesta

Estoy bastante seguro de que el problema radica en su fuente de datos. Tiene un formato de datos incorrecto para number, o le faltan datos para algunos países, o incluso países que faltan por completo en su columna COUNTRY.

¿Por qué estoy segura?

Eche un vistazo a la siguiente trama producida por el fragmento a continuación:

Parcela:

enter image description here

Código:

import plotly.express as px

gapminder = px.data.gapminder().query("year==2007")
fig = px.choropleth(gapminder, locations="iso_alpha",
                    color="lifeExp", # lifeExp is a column of gapminder
                    hover_name="country", # column to add to hover information
                    color_continuous_scale=px.colors.sequential.Plasma)
fig.show()

Con la información disponible hasta ahora, me vienen a la mente un par de cosas:

  1. Grey no es parte de la escala de colores.
  2. Algunos países como Greenland y Russia son grises.
  3. Estos países también faltan en la fuente de datos.

gapminder['country'].unique() devuelve:

array(['Afghanistan', 'Albania', 'Algeria', 'Angola', 'Argentina',
       'Australia', 'Austria', 'Bahrain', 'Bangladesh', 'Belgium',
       'Benin', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil',
       'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon',
       'Canada', 'Central African Republic', 'Chad', 'Chile', 'China',
       'Colombia', 'Comoros', 'Congo, Dem. Rep.', 'Congo, Rep.',
       'Costa Rica', "Cote d'Ivoire", 'Croatia', 'Cuba', 'Czech Republic',
       'Denmark', 'Djibouti', 'Dominican Republic', 'Ecuador', 'Egypt',
       'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Ethiopia',
       'Finland', 'France', 'Gabon', 'Gambia', 'Germany', 'Ghana',
       'Greece', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Haiti',
       'Honduras', 'Hong Kong, China', 'Hungary', 'Iceland', 'India',
       'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Israel', 'Italy',
       'Jamaica', 'Japan', 'Jordan', 'Kenya', 'Korea, Dem. Rep.',
       'Korea, Rep.', 'Kuwait', 'Lebanon', 'Lesotho', 'Liberia', 'Libya',
       'Madagascar', 'Malawi', 'Malaysia', 'Mali', 'Mauritania',
       'Mauritius', 'Mexico', 'Mongolia', 'Montenegro', 'Morocco',
       'Mozambique', 'Myanmar', 'Namibia', 'Nepal', 'Netherlands',
       'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'Norway', 'Oman',
       'Pakistan', 'Panama', 'Paraguay', 'Peru', 'Philippines', 'Poland',
       'Portugal', 'Puerto Rico', 'Reunion', 'Romania', 'Rwanda',
       'Sao Tome and Principe', 'Saudi Arabia', 'Senegal', 'Serbia',
       'Sierra Leone', 'Singapore', 'Slovak Republic', 'Slovenia',
       'Somalia', 'South Africa', 'Spain', 'Sri Lanka', 'Sudan',
       'Swaziland', 'Sweden', 'Switzerland', 'Syria', 'Taiwan',
       'Tanzania', 'Thailand', 'Togo', 'Trinidad and Tobago', 'Tunisia',
       'Turkey', 'Uganda', 'United Kingdom', 'United States', 'Uruguay',
       'Venezuela', 'Vietnam', 'West Bank and Gaza', 'Yemen, Rep.',
       'Zambia', 'Zimbabwe'], dtype=object)

Le sugiero que eche un vistazo más de cerca a su conjunto de datos utilizando herramientas como df['CODE'].unique() y díganos qué encuentra.

1
vestland 23 oct. 2019 a las 13:06