Допустим, у меня есть простой кадр данных, как показано ниже:Реорганизация легенда, модифицируя одну конкретную линию для линейного графика в ggplot
> 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
на оси х, а другой столбцы как линии по оси 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
, а затем прорисовывая рисунок, используя следующий код, но теперь я не вижу, как увеличить размер строки, представляющей последний столбец, в A
.
Amelt <- melt(A, id.vars='x')
#Plot that orders legend according to order of columns in data frame.
#However, not sure how to thicken one particular line over the others.
pmelt <- ggplot(Amelt)+geom_line(aes(x=x, y=value, color=variable))
Как я могу получить и то, что я хочу?
Вы можете добавить строку для группы интересов во втором отдельном вызове 'geom_line':' + geom_line (data = subset (Amelt, variable == "b"), aes (x = x, y = значение, цвет = переменная), size = 1.1) ' – aosmith
Спасибо, aosmith. Это должно сработать! –
Просто, чтобы сделать его релевантным для последней переменной вместо жестко-кодированного значения «b»: '+ geom_line (data = subset (Amelt, variable == Amelt $ variable [nrow (Amelt)]), aes (x = x , y = значение, цвет = переменная), size = 1.1) ' –