如何使用 ggplot 添加彩色图例?
Posted
技术标签:
【中文标题】如何使用 ggplot 添加彩色图例?【英文标题】:How can I add with ggplot the colored legend? 【发布时间】:2019-04-04 10:28:33 【问题描述】:我有这个数据框,我想用 ggplot 在 x 轴上绘制 result_df50$id 列,在 y 轴上绘制 result_df50$Sens 和 列result_df50$Spec.
我还希望 result_df50$Sens 和 result_df50$Spec 以不同的颜色显示。图例还应显示列的不同颜色。
> result_df50
Acc Sens Spec id
1 12 51 15 1
2 24 78 28 2
3 31 86 32 3
4 78 23 90 4
5 49 43 56 5
6 25 82 33 6
7 6 87 8 7
8 60 33 61 8
9 54 4 66 9
10 5 54 9 10
11 1 53 4 11
12 2 59 7 12
13 4 73 3 13
14 48 41 55 14
15 30 72 39 15
16 57 10 67 16
17 80 31 91 17
18 30 65 36 18
19 58 45 61 19
20 12 50 19 20
21 39 47 46 21
22 38 49 45 22
23 3 69 5 23
24 68 24 76 24
25 35 64 42 25
到目前为止,我已经尝试过了,对此我很满意。
ggplot(data = result_df50) +
geom_line(data= result_df50, aes(x = result_df50$id, y = result_df50$Spec), colour = "blue") +
geom_line(data= result_df50, aes(x = result_df50$id, y = result_df50$Sens), colour = "red") +
labs(x="Number of iterations")
现在我只想添加带有每行颜色的图例。我试过fill
,但R给出警告并忽略了unknown aesthetics: fill
....
我该怎么做?
【问题讨论】:
【参考方案1】:这是因为您的数据集格式错误(宽)。您必须将其转换为长格式才能使其工作如下:
result_df50 <- read.table(text="Acc Sens Spec id
1 12 51 15 1
2 24 78 28 2
3 31 86 32 3
4 78 23 90 4
5 49 43 56 5
6 25 82 33 6
7 6 87 8 7
8 60 33 61 8
9 54 4 66 9
10 5 54 9 10
11 1 53 4 11
12 2 59 7 12
13 4 73 3 13
14 48 41 55 14
15 30 72 39 15
16 57 10 67 16
17 80 31 91 17
18 30 65 36 18
19 58 45 61 19
20 12 50 19 20
21 39 47 46 21
22 38 49 45 22
23 3 69 5 23
24 68 24 76 24
25 35 64 42 25")
# conversion to long format
library(reshape2)
result_df50 <- melt(result_df50, id.vars=c("Acc", "id"))
head(result_df50)
# Acc id variable value
# 1 12 1 Sens 51
# 2 24 2 Sens 78
# 3 31 3 Sens 86
# 4 78 4 Sens 23
# 5 49 5 Sens 43
# 6 25 6 Sens 82
# your plot
ggplot(data = result_df50, aes(x = id, y =value , color=variable)) +
geom_line() +
labs(x="Number of iterations")+
scale_color_manual(values=c("red", "blue")) # in case you want to keep your colors
这是你想要的吗?
【讨论】:
感谢您的评论!我如何(使用您的答案)在 y 轴上绘制两条线,分别是Sens
和 Spec
?
正是我的示例向您展示的方式。首先,您必须更改数据格式,以便 Spec 和 Sens 成为新列中的两个因子级别/字符。在 ggplot 美学的颜色参数中指定该列后,两条线都会以您想要的方式出现。复制并粘贴我的整个示例(您向下滚动了吗?)并尝试一下。它应该可以工作。
好吧,我没有看到其余的...刚刚试了一下,它的工作原理。谢谢! :)
您的示例数据很长,这使得示例比它必须的要长。您只需要很短的转换和情节部分。
我的真实数据更长...再次感谢!以上是关于如何使用 ggplot 添加彩色图例?的主要内容,如果未能解决你的问题,请参考以下文章