python - 制作具有多个跟踪的 Plotly Scattermapbox 的功能失败,Plotly,列表理解
问题描述
我正在尝试使用列表理解来创建data
Plotly 的属性Scattermapbox
。
这是df:
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
df = pd.DataFrame(
{"BOROUGH": ['MANHATTAN','MANHATTAN','MANHATTAN','QUEENS', 'QUEENS', 'QUEENS'],
"CALL_QTY":[100, 10, 5, 15, 30, 45],
"lat":[40.75, 40.72, 40.73, 40.72, 70.71, 40.721],
"lng":[-73.99, -73.98, -70.97, -73.74, -73.73, -73.72]})
这是我试图循环的元组:
u_sel = [list(a) for a in zip(['MANHATTAN', 'QUEENS'], # names
['blue', 'orange'], # colors
[0.6, 0.7])] # opacity
这是我创建的使用列表理解的函数:
def scattermap_data(df, u_sel):
return([go.Scattermapbox(
lat = df.loc[df['BOROUGH']==b].lat.astype('object'),
lon = df.loc[df['BOROUGH']==b].lng.astype('object'),
mode = 'markers',
marker = dict(
size=df.loc[df['BOROUGH']==b].CALL_QTY,
sizeref=0.9,
sizemode='area',
color=color,
opacity=opacity
)
)] for b, color, opacity in u_sel
)
问题:当我尝试运行以下内容时:
data = scattermap_data(df, u_sel)
layout = go.Layout(autosize=False,
mapbox= dict(
accesstoken=mapbox_access_token,
zoom=10,
style = 'dark',
center= dict(
lat=40.721319,
lon=-73.987130)
),
title = "O God, Why?")
fig = dict(data=data, layout=layout)
py.iplot(fig, filename='tmapbox')
ValueError:
Invalid value of type 'builtins.generator' received for the 'data' property of
Received value: <generator object scattermap_data.<locals>.<genexpr> at 0x000000000A72AF68>
我的问题:我的印象是,这个单一的 df 将被分解为 scattermapbox 跟踪元素的两个实例 -data
上面的结构类似于:
data = [trace1, trace2]
(这在格式上看起来与许多情节示例相似,其中轨迹列表构成in的data
参数。dict
fig
如果我制作两个单独的跟踪,则此示例确实有效,go.Scattermapbox
但是我有几个需要此多重跟踪属性的图,并且我不想为每个图复制代码(即为每个图制作 2 个不同trace
的实例。我觉得我快要让它工作了,但我只需要一些调整。
辅助信息:Plotly v. 3.3.0,python 3.6,我是列表理解和情节的新手,非常感谢任何帮助。
编辑:添加了import
声明以防任何人退缩。编辑2:改进的问题陈述,标题
解决方案
我发现了我的问题:我应该list()
在函数的返回中使用方括号而不是方括号。
def scattermap_data(df, u_sel):
return(list(go.Scattermapbox(
lat = df.loc[df['BOROUGH']==b].lat.astype('object'),
lon = df.loc[df['BOROUGH']==b].lng.astype('object'),
mode = 'markers',
marker = dict(
size=df.loc[df['BOROUGH']==b].CALL_QTY,
sizeref=0.9,
sizemode='area',
color=color,
opacity=opacity
)
) for b, color, opacity in u_sel)
)
推荐阅读
- c# - 如何在 Windows 上从 .NET Core 执行/调用并行程序集?
- swift - 如何结合这两种异步方法的结果?
- node.js - 使用sequelize比较节点js中的日期
- python-3.x - NameError:名称“pyotp”未定义
- php - 如何等待完成递归循环然后只回显?
- excel - “查找”命令的表达式
- authentication - 从 MS Graph 中获取具有客户端 ID 和秘密 C# 的组
- search - 如何仅搜索到文档末尾/在文档末尾被警告?(自由办公室)
- haskell-stack - 安装haskell-platform for windows后找不到stack命令
- python - Python,循环 - 代码结果与预期结果不匹配