假设我有一个简单的数据框,如下所示:
> A <- data.frame(x=1:10, a=rep(1,10), d=rep(2,10), b=rep(3,10))
> A
x a d b
1 1 1 2 3
2 2 1 2 3
3 3 1 2 3
4 4 1 2 3
5 5 1 2 3
6 6 1 2 3
7 7 1 2 3
8 8 1 2 3
9 9 1 2 3
10 10 1 2 3
我想在x轴上用x
绘制这个,而在y轴上绘制其他列。我希望代表最终列的线比其他线稍厚。所以我可以使用以下代码执行此操作,这将导致下面显示的图:
library(ggplot2)
#Plot that creates a thicker line for last column of data.
#However, order of legend is changed to alphabetical order.
p <- ggplot(A, aes(x))
for(i in 2:length(A)){
gg.data <- data.frame(x=A$x, value=A[,i], name=names(A)[i])
if(i==length(A)){
p <- p + geom_line(data=gg.data, aes(y=value, color=name), size=1.1)
} else{
p <- p + geom_line(data=gg.data, aes(y=value, color=name))
}
}
现在上面绘图的问题是图例中变量的顺序已更改为与字母顺序对齐。我不想那样;相反,我希望订单保持a
,d
,b
。
我可以使用melt
按照我的意愿保留订单,然后使用下面的代码进行绘图,但现在我看不到如何增加代表{{1}中最后一列的行的大小}。
A
我怎样才能得到我想要的东西?
答案 0 :(得分:0)
您是否尝试过使用 scale_fill_discrete(breaks = c(“a”,“d”,“b”))来指定图表的图例。
请看一下这个链接: http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/
希望这有帮助!