如何在 kotlin 中的同一行 let-plot 上使用 2 种颜色?

问题描述 投票:0回答:1

我有一张交易图表。我想要有一个部分,其中购买了股票,而没有购买股票。

数据:

  • 成本:列表 = [100.0, 101.0, 102.0, 101.0, ...]
  • 已购买:列表 = [假,真,真,假,...]

我期望看到的: enter image description here

目前,我在这里画了10张

geomLine
图表:

  • 1
    geomLine
    绿色
  • 9
    geomLine
    红色代表该股票被购买。
... 

    var chart = letsPlot(data)
    chart += geomLine(
        color = "dark-green",
        tooltips = TooltipOptions().title("$ticker cost"),
        mapping = {
            x = "x"
            y = "y"
        }
    )


    repeat(isPurchased.size) {
        chart += drawRedChart(it)
    }

    private fun drawRedChart(index: Int): Feature {
        return geomLine(
            color = "red",
            mapping = {
                x = "x$index"
                y = "y$index"
            }
        )
    }

这个解决方案有效,但它需要太多内存,而且我为购买股票的每个细分市场复制了列表,所以,我的解决方案很糟糕并且不是最佳的。

您能否帮忙根据费用清单用 2 种颜色画一条线,其中红色表示已购买,绿色表示未购买,如上面的屏幕截图所示,使用 Kotlin?

kotlin plot charts lets-plot
1个回答
0
投票

Lets-plot 支持线条和路径几何形状的可变颜色。 尝试仅将颜色映射到“isPurchased”变量的一行:

geomLine(
        tooltips = layerTooltips().title("$ticker cost"), // <-- also better
        mapping = {
            x = "x"
            y = "y"
            color = "isPurchased"
        }

您还需要为此映射设置红/绿色阶:

+ scaleColorManual(listOf("red", "green"), limits = listOf(false, true))

另请参阅:可变线演示。

© www.soinside.com 2019 - 2024. All rights reserved.