在下图中,time
位于x轴上,但每年都没有显示刻度线:
ggplot(mm, aes(x = time, y = value)) +
geom_point(aes(color = variable)) +
geom_line(stat = "smooth", method = "lm", alpha = 0.5) +
facet_grid(variable ~ ., scales = "free_y") +
theme(legend.position="none") +
coord_fixed(ratio = 10)
为了解决这个问题,我已将time
变量转换为一个因子,该因子有效,但线性回归消失了:
ggplot(mm, aes(x = factor(time), y = value)) +
geom_point(aes(color = variable)) +
geom_line(stat = "smooth", method = "lm", alpha = 0.5) +
facet_grid(variable ~ ., scales = "free_y") +
theme(legend.position = "none") +
coord_fixed(ratio = 10)
geom_line
是否有解决方法?
答案 0 :(得分:0)
我认为scale_x_date
正是您所寻找的。 p>
首先,一些可重复的数据:
df <-
data.frame(
y = 99:117
, x = seq(as.Date("1999-01-01")
, as.Date("2017-01-01")
, "year")
)
然后,这就是你可以设置一些&#34;漂亮&#34;在每年仍然得到一个滴答的同时打破积分。如果您希望每年都贴上标签,请使用date_breaks = "1 year"
代替我现在拥有的breaks
和date_minor_breaks
个参数
ggplot(df, aes(x = x, y = y) ) +
geom_smooth(method = "lm") +
geom_point() +
scale_x_date(breaks = pretty(df$x)
, date_minor_breaks = "1 year"
, date_labels = "%Y")
给出
或者,如果您的年份只是数字(而非日期),您可以使用scale_x_continuous
获得类似效果:
df <-
data.frame(
y = 99:117
, x = 1999:2017
)
ggplot(df, aes(x = x, y = y) ) +
geom_smooth(method = "lm") +
geom_point() +
scale_x_continuous(breaks = pretty(df$x)
, minor_breaks = unique(df$x)) +
theme_gray()
给出了与上面无法区分的情节。