当我从Google Trend下载数据时,数据集如下所示:
Week nuclear atomic nuclear.weapons unemployment
2004-01-04 - 2004-01-10 11 11 1 15
2004-01-11 - 2004-01-17 11 13 1 13
2004-01-18 - 2004-01-24 10 11 1 13
如何将“周”中的日期从“Y-m-d-Y-m-d”更改为“年 - 周”格式?
此外,我怎么能告诉ggplot,只有年份是在x轴上打印而不是x的所有值?
@Mattrition:谢谢。我听从你的建议:
trends <- melt(trends, id = "Woche",
measure = c("nuclear", "atomic", "nuclear.weapons", "unemployment"))
trends$Week<- gsub("^(\\d+-\\d+-\\d+).+", "\\1", trends$Week)
trends$Week <- as.Date(trends$Week)
ggplot(trends, aes(Week, value, colour = variable, group=variable)) +
geom_line() +
ylab("Trends") +
theme(legend.position="top", legend.title=element_blank(),
panel.background = element_rect(fill = "#FFFFFF", colour="#000000"))+
scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9", "#009E73"))+
stat_smooth(method="loess")
现在,每隔一年在x轴上贴上标签(2004年,2006年......)。我如何告诉ggplot每年贴标签(2004年,2005年,......)?
答案 0 :(得分:1)
ggplot
会理解Date
个对象(请参阅?Date
)并制定适当的标签。
您可以使用gsub
之类的内容来提取每周的开始日期。这使用正则表达式匹配第一个参数并返回括号集内的任何内容:
df$startingDay <- gsub("^(\\d+-\\d+-\\d+).+", "\\1", df$Week)
然后在提取的日期字符串上调用as.Date()
以转换为Date
个对象:
df$date <- as.Date(df$startingDay)
然后,您可以使用日期对象绘制您想要绘制的内容:
g <- ggplot(df, aes(date, as.numeric(atomic))) + geom_line()
print(g)
编辑:
要回答您的其他问题,请将以下内容添加到您的ggplot对象中:
library(scales)
g <- g + scale_x_date(breaks=date_breaks(width="1 year"),
labels=date_format("%Y"))