在 clojurescript 的 FlexibleXYPlot 中插入用 for 生成的序列的结果 [已解决]

Insert the result of a sequence generated with for in a FlexibleXYPlot in clojurescript [SOLVED]

在这个问题 () 中,我学习了如何将创建两个 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"]}}

crear-etiqueta是返回两个customSGVSeries的函数。问题是使用上面的代码,图中没有显示任何内容。

我上传了一个带有 MWE 的 repo:https://github.com/lopezsolerluis/annie-test-for-Whosebug

编辑

我采用了 Eugene 的绝妙创意...它非常有效!

     (into [:> rvis/FlexibleXYPlot {...}] 
            (mapcat (fn [[id {:keys [x y texto]}]]
                       (crear-etiqueta id x y texto))
                    etiquetas))

扩展我对问题的评论。

for 用于两个集合:

(into [:> rvis/FlexibleXYPlot {...}] 
      (for [[id {:keys [x y texto]}] etiquetas
            series (crear-etiqueta id x y texto)]
        series))

for 将遍历 eqieuetas,对于每个项目,它将对其进行解构并将结果传递给 crear-etiqueta,其中 returns 是一个集合。 for 然后遍历该集合并将每个项目的值分配给 series。然后body最后求值,也就是returnsseries.

的值

使用mapcat换能器:

(into [:> rvis/FlexibleXYPlot {...}]
      (mapcat (fn [[id {:keys [x y texto]}]]
                (crear-etiqueta id x y texto)))
      etiquetas)

我不会详细介绍它的工作原理 - 都已记录在案 here。我绝对建议您完整阅读该参考资料,因为换能器在许多情况下都非常有用。