r-向多行ggplot添加图例



我正试图在ggplot的绘图中添加一个图例。数据集可以在中看到

percent       KNN  logistic       LDA       QDA
1     0.10 0.7393658 0.2815159 0.2907966 0.2737819
2     0.20 0.4926279 0.2558543 0.2723330 0.2619254
3     0.30 0.4631474 0.2539841 0.2579681 0.2569721
4     0.40 0.3995381 0.2448037 0.2471132 0.2471132
5     0.50 0.3400538 0.2258065 0.2271505 0.2298387
6     0.60 0.3287671 0.2226027 0.2208904 0.2243151
7     0.75 0.3834808 0.2684366 0.2684366 0.2743363
8     0.80 0.3771626 0.2664360 0.2698962 0.2733564
9     0.90 0.3509934 0.2582781 0.2649007 0.2516556
10    0.99 0.2727273 0.3636364 0.3636364 0.3181818

问题是,它不允许使用列的名称作为指导来创建情节的图例。我用来创建绘图的代码如下:

Default <- (ggplot(default_error, aes(x = percentages, colour = variable))
+ geom_line(aes(y = KNN), color = "darkred")
+ geom_line(aes(y = logistic), color = "steelblue")
+ geom_line(aes(y = LDA), color = "green")
+ geom_line(aes(y = QDA), color = "coral3")
+ labs(y = "Error rate", x = "Percentage", title = "Default Error", color = "Method")
+ theme_linedraw()
+ theme(legend.title = element_text(size = 25),
legend.text = element_text(size = 20),
legend.position = "right",
axis.title = element_text(size = 20),
axis.text = element_text(size = 15, angle = 0, vjust = 0.8, hjust = 0.7),
plot.title = element_text (face = NULL, hjust = 0, size = 30, family = "montse", vjust = 0),
plot.subtitle = element_text (face = NULL, hjust = 0.5, size = 10, family = "montse", vjust = 0))
+ scale_color_discrete(name = "Method", labels = c("KNN", "Logistic","LDA","QDA")))
library(tidyr)
default_error <- pivot_longer(default_error, names(default_error)[-1])

然后你不需要所有的geom_line,颜色可以在scale_color_manual():中给出

(ggplot(x, aes(x = percent, y = value, colour = name))
+ geom_line()
+ labs(y = "Error rate", x = "Percentage", title = "Default Error", color = "Method")
+ theme_linedraw()
+ theme(legend.title = element_text(size = 25),
legend.text = element_text(size = 20),
legend.position = "right",
axis.title = element_text(size = 20),
axis.text = element_text(size = 15, angle = 0, vjust = 0.8, hjust = 0.7),
plot.title = element_text (face = NULL, hjust = 0, size = 30, family = "montse", vjust = 0),
plot.subtitle = element_text (face = NULL, hjust = 0.5, size = 10, vjust = 0))
+ scale_color_manual(name = "Method", 
values = c(KNN = "darkred", logistic = "steelblue", LDA = "green", QDA = "coral3"),
labels = c("KNN", "Logistic","LDA","QDA")))

这样就可以了。

在未来,请确保提供一个可重复的例子。

最新更新