在这个问题中(如何从 clojurescript 中的单个函数返回两个 customSVGSeries),我学习了如何将创建两个
customSVGSeries
的函数的结果插入到 XYPlot
中。
现在我想插入
for
调用同一函数的结果:
(into [:> rvis/FlexibleXYPlot {...}]
(doall (for [[id {:keys [x y texto]}] etiquetas]
(crear-etiqueta id x y texto))))
其中
etiquetas
是具有以下形式的地图:
{:etiqueta-1 {:x 0, :y 0, :texto ["176.6"]}, :etiqueta-2 {:x 1, :y 2, :texto ["Hidrógeno"]}}
and
crear-etiqueta
是返回两个 customSGVSeries
的函数。问题是使用上面的代码,图中没有显示任何内容。
我上传了带有 MWE 的存储库:https://github.com/lopezsolerluis/annie-test-for-stackoverflow
扩展我对问题的评论。
将
for
与两个集合一起使用:
(into [:> rvis/FlexibleXYPlot {...}]
(for [[id {:keys [x y texto]}] etiquetas
series (crear-etiqueta id x y texto)]
series))
for
将迭代 eqieuetas
,对于每个项目,它将对其进行解构并将结果传递到 crear-etiqueta
,后者返回一个集合。然后 for
迭代该集合并将每个项目的值分配给 series
。最后对 body 进行求值,仅返回 series
的值。
使用
mapcat
传感器:
(into [:> rvis/FlexibleXYPlot {...}]
(mapcat (fn [[id {:keys [x y texto]}]]
(crear-etiqueta id x y texto)))
etiquetas)
我不会详细介绍它的工作原理——所有内容都记录在here。我绝对建议您完整阅读该参考资料,因为传感器在许多情况下都非常有用。