Python Plotly-如何从唯一的Scattergeo对象向每条跟踪添加多种颜色?
我正在用Python中的dash/plotly开发一个仪表板应用程序 我需要建立一个有1000多条痕迹的地图。因为,我尝试使用一个单一的Scattergeo对象,但通常情况下,它不提供用不同颜色绘制每个“轨迹”的方法 我希望每个轨迹包含不同的颜色。对于Python Plotly-如何从唯一的Scattergeo对象向每条跟踪添加多种颜色?,plotly,plotly-dash,plotly-python,Plotly,Plotly Dash,Plotly Python,我正在用Python中的dash/plotly开发一个仪表板应用程序 我需要建立一个有1000多条痕迹的地图。因为,我尝试使用一个单一的Scattergeo对象,但通常情况下,它不提供用不同颜色绘制每个“轨迹”的方法 我希望每个轨迹包含不同的颜色。对于标记,每个标记都可以有一种颜色,但不可能使用行 下面的图片说明了我上面所说的 有什么变通办法可以解决这个棘手的问题吗 我在下面发送了一个可复制的代码 先谢谢你 可复制代码: ####################################
标记
,每个标记都可以有一种颜色,但不可能使用行
下面的图片说明了我上面所说的
有什么变通办法可以解决这个棘手的问题吗
我在下面发送了一个可复制的代码
先谢谢你
可复制代码:
##################################################
#阴谋地
##################################################
#资料来源:https://plotly.com/python/lines-on-maps/
导入plotly.graph_对象作为go
图=go.Figure()
图添加轨迹(go.Scattergeo(
纬度=[
40.7127,51.5072,无,
30.7127,41.5072,无,
20.7127, 31.5072
],
lon=[
-74.0059,0.1275,无,
-64.0059,-10.1275,无,
-54.0059, -20.1275
],
模式='行',
行=dict(
宽度=4,
颜色='蓝色',
#我想要这样的东西:
#颜色=[
#“红色”,
#没有,,
#“黄色”,
#没有,,
#“绿色”
# ],
),
))
图添加轨迹(go.Scattergeo(
纬度=[
40.7127,
30.7127,
20.7127
],
lon=[
-74.0059,
-64.0059,
-54.0059,
],
模式='标记',
记号笔(
尺寸=10,
颜色=[“红色”、“黄色”、“绿色”],
行=dict(
宽度=3,
颜色='rgba(68,68,68,0)'
),
)
))
图1.2.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1(
title_text=‘Traces’,
showlegend=False,
地理=口述(
分辨率=50,
showland=True,
showlakes=True,
landcolor='rgb(204204204)',
countrycolor='rgb(204204204)',
湖色='rgb(255,255,255)',
投影类型=“等矩形”,
宽度=2,
lataxis=dict(
范围=[0,70],
showgrid=True,
dtick=10
),
lonaxis=dict(
范围=[-100,20],
showgrid=True,
dtick=20
),
)
)
##################################################
#冲刺
##################################################
导入破折号
将仪表板核心组件作为dcc导入
将dash_html_组件导入为html
app=dash.dash()
app.layout=html.Div([
dcc.图(图=图)
])
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, None],[20.7127, 31.5072]]
lon_list = [[-74.0059, 0.1275, None],[-64.0059, -10.1275, None],[-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', 'yellow', 'green'],
line = dict(
width = 3,
color = 'rgba(68, 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, 204, 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],
showgrid = True,
dtick = 20
),
)
)
fig.show()
它必须是一个绘图仪吗?或者使用其他组件(如仪表板传单)的解决方案可用吗?你的想法太棒了。我用过短跑传单,效果很好。谢谢,谢谢!我很高兴你喜欢:)谢谢你的回答,但是使用循环可能会导致,因为我正在寻找一个不使用循环的解决方案。好的,这是一个公平的观点,因为你正在绘制1000多条记录道。谢谢你的反馈!