首页 > 解决方案 > 如何增加ggplot中图例标签中绘制的下划线宽度?

问题描述

这是我的 ggplot 图表:

ggplot(mtcars) + geom_point(aes(cyl,mpg, color = cyl)) + scale_color_continuous(labels = c(expression(underline("Above 65 & over")),
                  expression(underline("45 - 64")),expression(underline("25 - 44")), expression(underline("15 - 24")),expression(underline("Under 15"))))

首先:我想增加下划线的宽度。我怎样才能做到这一点?这个下划线的结尾也可以是箭头吗?有没有什么包可以帮助做到这一点?

其次,我想知道如何找出表达式函数可以接受的参数。?

标签: rggplot2

解决方案


我能想到的唯一解决方案是使用网格“手动”绘制线条,例如

library(tidyverse)
library(grid)

png(filename = "example.png", width = 480, height = 480)
ggplot(mtcars) + geom_point(aes(cyl,mpg, color = cyl)) +
  scale_color_continuous(labels = c(expression(underline(" Above 65 & over")),
                                    expression(underline("45 - 64")),
                                    expression(underline("25 - 44")),
                                    expression(underline("15 - 24")),
                                    expression(underline("Under 15"))))
grid.lines(x = c(0.89, 0.98), y = 0.592,
           arrow = arrow(length = unit(1.5, "mm"), ends = "first"))
grid.lines(x = c(0.91, 0.98), y = 0.547,
           arrow = arrow(length = unit(1.5, "mm"), ends = "first"))
grid.lines(x = c(0.91, 0.98), y = 0.502,
           arrow = arrow(length = unit(1.5, "mm"), ends = "first"))
grid.lines(x = c(0.91, 0.98), y = 0.457,
           arrow = arrow(length = unit(1.5, "mm"), ends = "first"))
grid.lines(x = c(0.831, 0.98), y = 0.414,
           arrow = arrow(length = unit(1.5, "mm"), ends = "first"))
grid.gedit("GRID.line", gp = gpar(lwd = 2))
dev.off()

例子.png

reprex 包于 2021-07-16 创建 (v2.0.0 )

这种方法有优点和缺点,例如,您可以使线条看起来完全符合您的要求,但是您必须准确指定它们将在绘图上绘制的位置,并且您不能动态重新调整绘图(即您需要在绘制线条之前指定最终绘图的尺寸)。我很想知道是否有更好的方法来解决这个问题。

有关网格图形的更多信息:


推荐阅读