我想用ggplot2中另一列的元素替换列的元素
library(tidyverse)
df1 <- read.table(text =
"nbb_RMSE 9 0.2402482
mbb_RMSE 9 0.1023012
cbb_RMSE 8 0.2031448
tmbb_RMSE 4 0.2654746
tcbb_RMSE 9 0.4048711")
colnames(df1) <- c("Methods", "lb", "RMSE")
df1 |>
mutate(colour = fct_reorder(Methods, RMSE)) |>
ggplot(aes(Methods, RMSE, colour = colour)) +
geom_point(size = 4) +
geom_segment(aes(Methods, xend = Methods, yend = RMSE, y = 0)) +
scale_color_manual(values = c("green", "yellowgreen", "yellow", "orange", "red")) +
theme_bw()

我想要什么
lb列应排列如下:表示最小RMSE的Green对应于lb列中的9,表示RMSE中嵌套高值的yellowgreen对应于lb列中的8,表示RMSE中嵌套高值的yellow对应于lb列中的9,orange在RMSE中代表嵌套高值的RMSE对应于lb列中的4,red在RMSE列中代表巢高值的red对应于D20列中的9。
我希望图例上的标签color更改为数据name中名为lb的列的名称。
这是

发布于 2022-06-02 19:14:39
您可以在name和labels参数中使用scale_color_manual
df1 |>
mutate(colour = fct_reorder(Methods, RMSE)) |>
ggplot(aes(Methods, RMSE, colour = colour)) +
geom_point(size = 4) +
geom_segment(aes(Methods, xend = Methods, yend = RMSE, y = 0)) +
scale_color_manual(values = c("green", "yellowgreen", "yellow",
"orange", "red"),
labels = c(9, 8, 9, 9, 4), name = "lb") +
theme_bw(base_size = 16)

https://stackoverflow.com/questions/72481179
复制相似问题