虚假数据:
df = data.frame(year = as.factor(1800:2000),
variable = rnorm(length(1800:2000)))
你的情节与假数据:
ggplot(df, aes(x = year, y = variable, group = 1)) +
geom_line()
问题是你的年份变量是factor
(或者可能是一个字符串?),所以它被解释为分类的。您可以在这个框架内工作:
ggplot(df, aes(x = year, y = variable, group = 1)) +
geom_line() +
scale_x_discrete(breaks = levels(df$year)[c(T, rep(F, 9))])
或者,更好的是,您可以将其转换为数字,然后事情会自动进行:
df$real_year = as.numeric(as.character(df$year))
ggplot(df, aes(x = real_year, y = variable)) +
geom_line()
请注意,以“正确的方式”进行操作,您不必费心group = 1
或弄乱秤。 ggplot 会奖励您以正确的格式提供数据:修复您的数据,您就不必修复您的绘图。如果您想确保标签恰好每 10 年一次,您可以使用scale_x_continuous
正如 user2034412 所建议的,但默认情况下它会很好地猜测轴上的“漂亮”中断。
如果您的 x 轴是实际日期或日期时间,例如1984-10-31
那么你应该将其转换为Date
对象(或者可能是POSIX
如果有时间的话也反对),然后再一次ggplot
然后就会知道如何正确处理。看?strftime
(基函数)或lubridate
用于转换为适当日期类的包。