如何在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
相关产品推荐
相关产品推荐

