如何解决Python Plotly-如何为唯一Scattergeo对象的每条迹线添加多种颜色?
我正在使用dash / plotly在Python中开发仪表板应用程序。
我需要构建一个包含1000条以上痕迹的地图。由于performance issues,我试图使用一个Scattergeo对象,但是通常,它没有提供一种以不同颜色绘制每个“迹线”的方法。
我希望每条迹线包含不同的颜色。对于markers
,每个颜色都可以有一种颜色,但是不能使用lines
。
下面的图片说明了我在上面说过的话。
有什么解决方法可以用来解决这个问题吗?
我在下面发送可复制的代码。
谢谢。
可复制的代码:
##################################################
# plotly
##################################################
# Source: https://plotly.com/python/lines-on-maps/
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scattergeo(
lat = [
40.7127,51.5072,None,30.7127,41.5072,20.7127,31.5072
],lon = [
-74.0059,0.1275,-64.0059,-10.1275,-54.0059,-20.1275
],mode = 'lines',line = dict(
width=4,color = 'blue',# I would like something like this:
# color = [
# 'red',# None,# 'yellow',# 'green'
# ],),))
fig.add_trace(go.Scattergeo(
lat = [
40.7127,20.7127
],],mode = 'markers',marker = dict(
size = 10,color = ['red','yellow','green'],line = dict(
width = 3,color = 'rgba(68,68,0)'
),)
))
fig.update_layout(
title_text = 'Traces',showlegend = False,geo = dict(
resolution = 50,showland = True,showlakes = True,landcolor = 'rgb(204,204,204)',countrycolor = 'rgb(204,lakecolor = 'rgb(255,255,255)',projection_type = "equirectangular",coastlinewidth = 2,lataxis = dict(
range = [0,70],showgrid = True,dtick = 10
),lonaxis = dict(
range = [-100,20],dtick = 20
),)
)
##################################################
# dash
##################################################
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(figure=fig)
])
app.run_server(debug=True,use_reloader=True)
解决方法
您可以创建一个包含纬度,经度和颜色的列表。然后遍历列表,一次添加一条轨迹。
import plotly.graph_objects as go
fig = go.Figure()
## create lists containing your information
lat_list = [[40.7127,51.5072,None],[30.7127,41.5072,[20.7127,31.5072]]
lon_list = [[-74.0059,0.1275,[-64.0059,-10.1275,[-54.0059,-20.1275]]
colors_list = ['red','yellow','green']
for idx in range(len(colors_list)):
fig.add_trace(go.Scattergeo(
lat = lat_list[idx],lon = lon_list[idx],mode = 'lines',line = dict(
width=4,color = colors_list[idx],),))
fig.add_trace(go.Scattergeo(
lat = [
40.7127,30.7127,20.7127
],lon = [
-74.0059,-64.0059,-54.0059,],mode = 'markers',marker = dict(
size = 10,color = ['red','green'],line = dict(
width = 3,color = 'rgba(68,68,0)'
),)
))
fig.update_layout(
title_text = 'Traces',showlegend = False,geo = dict(
resolution = 50,showland = True,showlakes = True,landcolor = 'rgb(204,204,204)',countrycolor = 'rgb(204,lakecolor = 'rgb(255,255,255)',projection_type = "equirectangular",coastlinewidth = 2,lataxis = dict(
range = [0,70],showgrid = True,dtick = 10
),lonaxis = dict(
range = [-100,20],dtick = 20
),)
)
fig.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。