如何在ggplot2中使用字符向量修改图例字体颜色?
解决ggplot2图例文本按向量设置不同颜色的问题
你用element_markdown()没成功,是因为它的color参数只能设置统一的文本颜色,不支持传入向量为每个图例标签单独指定颜色。要实现每个标签对应不同颜色,得借助ggtext支持的markdown内联样式来定义每个标签的颜色,具体有两种方式:
方法一:修改原始数据的因子标签
先把cyl转换为因子时,直接给每个标签加上带颜色的markdown格式:
library(ggplot2) library(ggtext) # 修改因子标签,嵌入颜色样式 mtcars$cyl <- factor(mtcars$cyl, labels = c("<span style='color:red'>4</span>", "<span style='color:blue'>6</span>", "<span style='color:green'>8</span>")) # 绘图并启用markdown渲染 woof <- qplot(wt, mpg, data = mtcars, colour = cyl) woof2 <- woof + theme(axis.text = element_blank()) + theme(legend.text = element_markdown(size = 12)) woof2
方法二:在颜色刻度中自定义标签
如果不想改动原始数据,可以在scale_color_discrete()里直接指定带颜色的标签:
library(ggplot2) library(ggtext) woof <- qplot(wt, mpg, data = mtcars, colour = factor(cyl)) woof2 <- woof + theme(axis.text = element_blank()) + theme(legend.text = element_markdown(size = 12)) + scale_color_discrete(labels = c("<span style='color:red'>4</span>", "<span style='color:blue'>6</span>", "<span style='color:green'>8</span>")) woof2
两种方法都能让每个图例文本对应你指定的red/blue/green颜色,核心是利用markdown的<span>标签内联样式来单独定义每个标签的颜色,而不是通过element_markdown()的color参数传向量。
内容的提问来源于stack exchange,提问作者lager
相关产品推荐
相关产品推荐

