Как использовать функцию карты choropleth с библиотекой python plotly для визуализации по континентам?

#python #geolocation #plotly #location #choropleth

Вопрос:

Я пытаюсь создать карту choropleth, чтобы визуализировать общее количество просмотров страниц на каждом континенте из фрейма данных, но параметр locationmode функции plotly отсутствует.Есть ли какой-нибудь способ решить эту проблему ? Когда я использую «названия стран» для режима определения местоположения, это не работает.

 st.subheader("Continent's Total Pageviews Choropleth Map")
fig2 = go.Figure(data= go.Choropleth(
locations= df1['continent'],
z = df1['total_pageviews'].astype(float),
locationmode = 'country names',
colorscale = 'Reds',
colorbar_title = "Total Pageviews",
))
fig2.update_layout( width = 1100 , height = 500 )
st.write(fig2)
 

Комментарии:

1. как можно запустить ваш код? пожалуйста, поделитесь своим фреймом данных

Ответ №1:

  • получить ГЕОДЖСОН континентов
  • создайте фрейм данных geopandas, интегрируйте данные о просмотрах страниц
  • простой график картографического поля
 import requests
import geopandas as gpd
import numpy as np
import plotly.express as px

cont = requests.get(
    "https://gist.githubusercontent.com/hrbrmstr/91ea5cc9474286c72838/raw/59421ff9b268ff0929b051ddafafbeb94a4c1910/continents.json"
)
gdf = gpd.GeoDataFrame.from_features(cont.json())

gdf = gdf.assign(
    total_pageviews=np.random.randint(10 ** 7, 10 ** 9, len(gdf))
).set_index("CONTINENT")

px.choropleth_mapbox(
    gdf,
    geojson=gdf.geometry,
    locations=gdf.index,
    color="total_pageviews",
    mapbox_style="carto-positron",
    color_continuous_scale="Reds",
    opacity=0.5,
    zoom=1,
).update_layout(margin={"l": 0, "r": 0, "b": 0, "t": 0})
 

Комментарии:

1. Большое вам спасибо , все работало нормально , я обработал немного для установки геопанд и обработки данных, чтобы исправить местоположение данных, еще раз спасибо, сэр.

2. Но в файле GeoJSON есть как океания, так и Австралия, кстати, антарктида отсутствует.

3. Я только что поискал в гугле geojson continents и получил первый результат. если вам нужны другие функции, найдите какой-нибудь geojson, который соответствует вашим требованиям, и подход тот же. В Антарктиде просто нет масштабирования. В моем понимании континентов, определяемых континентальными плитами, Австралия-это континент: -)