You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JetBrains Lets-Plot中设置副标题、说明文字及修改/移除图例标题

Lets-Plot Kotlin 实现副标题、说明文字与图例标题修改方案

1. 修改或移除图例标题

直接在labs()函数中传入对应美学映射的参数即可实现,你当前的图例由fill映射生成,操作方式如下:

  • 自定义图例标题:给fill参数赋值为你想要的标题文本
  • 移除图例标题:给fill参数赋值为空字符串""
    如果需要全局隐藏所有图例标题,也可以在theme()中添加legendTitle = elementBlank()配置。

2. 添加副标题与说明文字

当前Lets-Plot的labs()确实不直接支持subtitle、caption参数,你可以通过添加ggText()自定义文本图层的方式实现,分别指定文本的位置、样式、对齐方式即可:

  • 副标题放在主标题下方,x轴取刻度中点实现居中,y坐标调整到绘图区域上方的合适位置
  • 说明文字放在图表底部右侧,x轴取最大刻度值靠右对齐,y坐标调整到绘图区域下方的合适位置

修改后的完整代码示例

val goodColors = listOf("#A1DBB2", "#69D2E7")
val badColors = listOf("#F45D4C", "#F7A541", "#FACA66", "#F45D4C", "#F7A541", "#FACA66")

val barWidth = 0.4

return letsPlot() +
        labs(
            x = "", 
            y = "", 
            title = "My title",
            fill = "" // 移除fill对应的图例标题,要自定义直接填写文本即可
        ) +
        // 添加副标题
        ggText(
            x = 1.5, // x轴两个刻度为1和2,取中点实现居中
            y = 110, // 根据y轴最大值调整到主标题下方合适位置
            label = "自定义副标题内容",
            fontface = "italic",
            size = 12,
            color = "gray"
        ) +
        // 添加底部说明文字
        ggText(
            x = 2.2, // 靠右放置
            y = -10, // 调整到绘图区域下方
            label = "注:自定义说明文字内容",
            size = 9,
            color = "gray",
            hjust = 1
        ) +
        geomBar(stat = Stat.identity, position = Pos.stack, color = "black", width = barWidth) {
            x = listOf(1.0, 1.0, 2.0, 2.0).map { it - (barWidth / 2) + barWidth }
            y = listOf(16, 34, 18, 37)
            fill = listOf("Good one", "Good two", "Good one", "Good two")
        } +
        geomBar(stat = Stat.identity, position = Pos.stack, color = "red", width = barWidth) {
            x = listOf(1.0, 1.0, 1.0, 2.0, 2.0, 2.0).map { it - (barWidth / 2) }
            y = listOf(71, 20, 17, 55, 11, 10)
            fill = listOf("Bad one", "Bad two", "Bad Three", "Bad one", "Bad two", "Bad Three")
        } +
        scaleFillManual(values = goodColors + badColors) +
        scaleXDiscrete(breaks = listOf(1.0, 2.0), labels = listOf("2021-01-01", "2021-02-01")) +
        // 调整图表边距,避免自定义文本被截断
        theme(plotMargin = margin(40, 20, 40, 20))

提示:代码中的文本坐标、字号、颜色都可以根据你的实际显示需求调整。

内容的提问来源于stack exchange,提问作者Niels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 18:06:03