djq*_*djq 7 label r ggplot2 direct-labels
我正在尝试使用directlabels包来标记我在一个简单的图中的两条线(我正在使用ggplot2)

我的代码如下:
# libraries
library(ggplot2)
library(directlabels)
# Variables
A = array(1000,100)
F = seq(length=100, from=0, by=10)
f = array(5,100)
# make data frame 1
df <- data.frame(X = F * f/A, Y = F/A)
# plot line 1
p = ggplot(df, aes(x=X,y=Y))
p = p + geom_line(colour="#56B4E9")
# make data frame 2
df1 <- data.frame(X = F * f * 2/A, Y = F/A)
# plot line 2
p = p + geom_line(aes(x=X,y=Y), data=df1, colour="#56B4E9")
# label line
direct.label(p, 'last.points')
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误消息:
Error in direct.label.ggplot(p, "last.points") :
Need colour aesthetic to direct label.
Run Code Online (Sandbox Code Playgroud)
我已经尝试在direct.label()函数中添加几个参数,但我不明白应该使用什么美学参数.
EDi*_*EDi 17
您可以组合并融合它们,而不是使用2个数据帧:
library(ggplot2)
library(directlabels)
# Variables
A = array(1000,100)
F = seq(length=100, from=0, by=10)
f = array(5,100)
# make data frame 1
df <- data.frame(X = F * f/A, Y = F/A)
# make data frame 2
df1 <- data.frame(X = F * f * 2/A, Y = F/A)
# merge both dataframes
df2 <- merge(df, df1, by = "X")
# melt them
df2m <- melt(df2, id = "X")
# plot
p2 <- ggplot(df2m, aes(x = X, y = value, col = variable)) +
geom_line() +
scale_color_manual(values = rep("#56B4E9", 2))
direct.label(p2, 'last.points')
Run Code Online (Sandbox Code Playgroud)
如果你想要直接标签,你也可以使用直接标签2.0中的新geom_dl,但不想使用颜色审美:
install.packages("directlabels")
ggplot(df2m, aes(x = X, y = value))+
geom_line(aes(group=variable))+
geom_dl(aes(label=variable),method="last.points")
Run Code Online (Sandbox Code Playgroud)
