#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, который соответствует вашим требованиям, и подход тот же. В Антарктиде просто нет масштабирования. В моем понимании континентов, определяемых континентальными плитами, Австралия-это континент: -)