#python #json #performance #plotly #maps
Вопрос:
Я написал этот код, чтобы создать тепловую карту Канады с ползунком для разных «раундов» (случаев времени). Это работает хорошо, но для выполнения 6 раундов требуется 10 минут, но для выполнения большего количества раундов, например 50, требуется много часов. Есть ли что-нибудь, что может ускорить его, может быть, форматирование или чтение JSON?
import json
import plotly.express as px
import plotly.offline as pyo
import pandas as pd
df = pd.read_csv('/Users/....csv')
df["Product Number"] = df["Product Number"].str[:5]
df = df.dropna(axis=0, subset=['$perMHz-Pop (Posted)'])
df_openmhzpop = df.loc[df['Category'] == 'Open']
df_setasidemhzpop = df.loc[df['Category']== 'Set-Aside']
ca_tier4 = json.load(open(r"/Users/...CATier4.json", 'r', encoding='ISO-8859-1'))
fig_openmhzpop = px.choropleth_mapbox(df_openmhzpop, geojson=ca_tier4, locations ='Product Number', color='$perMHz-Pop (Posted) for Plot',
hover_data=["Round", "Product Number", "Category", "Service Area Name", "Start Price", "(Initial) Supply", "Aggregate Demand", "Excess Demand", "$perMHz-Pop (Posted)"],
range_color=(0,1.2), mapbox_style="carto-positron",
zoom=2.5, center={"lat": 63.0902, "lon": -95.7129},
opacity=1, animation_frame='Round', color_continuous_midpoint=0.5,
color_continuous_scale=["red", "white", "rgb(27,158,119)"])
fig_openmhzpop.layout.coloraxis.colorbar.title = '$perMHz-Pop (Posted)'
fig_openmhzpop.write_html(r'C:Users...Open.html')
Комментарии:
1.Я создал анимацию картографической коробки с инфекциями COVID в Великобритании. Две вещи, которые я нашел, помогли: 1. используйте геопанды и
simplify()
геометрию. 2. использовал plotly express для построения каждого фрейма картографического поля, но объекты графика для создания рисунка. из вашего кода я не вижу, где вы делаете эквивалентafig = go.Figure(data=base.data, frames=frames, layout=base.layout)
.frames
список-это то, что я описываю