我正在尝试创建一个绘图,其中每个人都有一个唯一的十六进制代码,并且我想使用
scale_color_identity()
进行绘图。我还想在 labels
中使用 scale_color_identity()
来获取要在图例中显示的每个人的实际姓名。我知道当您专门调用 ggplot
之外的字符串时,这是可能的,但我正在尝试为多种场景生成此内容,并且希望能够避免这种情况,而是调用正在绘制的数据集中的另一个变量。下面的例子是我目前必须这样做的。
library(ggplot2)
FakeData <- data.frame(Name = c("Bob Jungels", "Bob Jungels","Bob Jungels", "Sepp Kuss", "Sepp Kuss", "Sepp Kuss", "Egan Bernal", "Egan Bernal", "Egan Bernal"),
TeamColor = c("#00ab8e", "#00ab8e", "#00ab8e", "#ffe100", "#ffe100", "#ffe100", "#b61615", "#b61615", "#b61615"),
Distance = c(0, 60, 120, 0, 60, 120, 0, 60, 120),
Place = c(1, 1, 35, 75, 17, 1, 65, 10, 3))
FakeData$Name <- factor(FakeData$Name, levels = c("Bob Jungels", "Sepp Kuss", "Egan Bernal"))
ggplot(FakeData) +
geom_line(aes(x = Distance, y = Place, color = Name), size = 1.5) +
scale_color_manual(values = c(FakeData %>% distinct(TeamColor) %>% .$TeamColor))
我想做的,但似乎它还没有识别数据集中的任何变量。
ggplot(FakeData) +
geom_line(aes(x = Distance, y = Place, color = TeamColor), size = 1.5) +
scale_color_identity(labels = Name)
这会产生错误check_breaks_labels(breaks,labels)中的错误:找不到对象“Name”
我需要将此图应用于许多不同的数据过滤器,而上面的第一种方法对此并不理想。有没有人尝试做我所要求的事情?我环顾四周,但没有发现太多东西。