为什么文字颜色不显示

问题描述 投票:0回答:1

知道为什么 geom_text 的颜色不起作用吗?我原本以为底部的 A、B、C 是红色、黄色和蓝色,但现在它们都显示为黑色。

library(tidyverse)

ln <- data.frame(xval=c(1,2,3),yval=c(3,2,5))
txt <- data.frame(xval=c(1,2,3),yval=c(0.5,0.5,0.5),txt=c("A","B","C"),anc=c("red","yellow","blue"))

ggplot() + 
geom_line(data=ln, aes(x=xval, y=yval, color="line"), linewidth=1) +
geom_point(data=ln, aes(x=xval, y=yval, color="dot"), size=2.5) +
geom_text(data=txt,  aes(x=xval, y=yval, label=txt, color=anc), size=3) +
ylim(0, 6) + xlim(0, 4) +
scale_colour_manual(name="", values = c("line"="cyan", "dot"="black"))

enter image description here

尝试了上面的代码,我期待 A、B 和 C 为红色、黄色和蓝色,但惊讶地发现全部显示为黑色

r ggplot2
1个回答
0
投票

听起来您希望某些层使用

scale_colour_manual
而其他层使用
scale_colour_identity
,这可以使用
ggnewscale
包:

ggplot() + 
  geom_line(data=ln, aes(x=xval, y=yval, color="line"), linewidth=1) +
  geom_point(data=ln, aes(x=xval, y=yval, color="dot"), size=2.5) +
  ylim(0, 6) + xlim(0, 4) +
  scale_colour_manual(name="", values = c("line"="cyan", "dot"="black")) +
  ggnewscale::new_scale_colour() +
  geom_text(data=txt,  aes(x=xval, y=yval, label=txt, color=anc), size=3) +
  scale_color_identity()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.