使用directlabels + ggplot时的数据帧形状

时间:2014-07-31 23:51:19

标签: r ggplot2

我有以下数据框

# Data
Year <- c(1500,1750,2000)
Country1 <- c(10,20,30)
Country2 <- c(30,50,40)
df <- data.frame(Year, Country1, Country2)

我用

绘图
# Plot
require(ggplot2)
myplot <- ggplot(df, aes(Year)) + geom_line(aes(y=Country1)) + geom_line(aes(y=Country2)) + labs(y = "Cows")

一切都好。然后我想添加线条&#39;标签。我试试

# Add labels
require(directlabels)
direct.label(myplot)

抛出

Error in direct.label.ggplot(myplot) : 
  Need colour aesthetic to infer default direct labels.

我想问题是我的数据框形状不适合ggplot,因为我的标签是列名。

我应该重塑我的数据框吗?怎么样?

1 个答案:

答案 0 :(得分:0)

最简单的重塑形式(在我看来)是使用reshape2

df<-data.frame(
    Year = c(1500, 1750, 2000), 
    Country1 = c(10, 20, 30), 
    Country2 = c(30, 50, 40)
)

#reshape
library(reshape2)
mm<-melt(df, id.var="Year")

#plot
myplot2 <- ggplot(mm, aes(Year, value, color=variable))+ geom_line()  + labs(y = "Cows")

#add labels
library(directlabels)
direct.label(myplot2)

enter image description here

这样我们就可以提供适当的颜色&#34; direct.labels函数正在寻找的审美。