kravis をやめて letsPlot に移行した
どちらも ggplot2 を意識したインターフェース。
というか kravis は ggplot2 の wrapper なので、ggplot2 の実装をそのまま使えて便利っちゃ便利。 一方で、ggplot2 をインストールしなきゃいけないので面倒なこともある。docker で動かすこともできるのだが、動作にちょっとコツが必要。
kravis は krangl と同じ作者なので、相性がよくて便利だったのだが、kotlinx-dataframe 時代になったのでその優位性は失われた。
letsPlot kotlin は kotlin で実装されてるのでインストールが楽。 昔は letsPlot は機能が少なすぎたが、最近は letsPlot は機能がだいぶ増えてきたので letsPlot に移行することにする。
implementation("org.jetbrains.lets-plot:lets-plot-common:3.2.0")
implementation("org.jetbrains.lets-plot:lets-plot-image-export:3.2.0")
implementation("org.jetbrains.lets-plot:lets-plot-kotlin-jvm:4.4.1")
とかやる。
private fun renderSummary(df: DataFrame<Any?>) {
val p = letsPlot(df.toMap()) +
geomBar(alpha = 0.3) { x = "year"; fill = "severity" } +
facetWrap(facets = arrayOf("product")) +
themeLight()
ggsave(p, "./reports/summary.png", path = ".")
}
みたいに実装する。ggsave()
とか ggplot2 感がすごい。
LocalDate
をそのまま入れておくと描画できないとか微妙に癖はあるが。。
datalore との相性も jetbrains がメンテしているだけあって良い気がするので、今後はこっちをつかっていきたい所存。