gpt4 book ai didi

r - 如何告诉 R 的 ggplot2 为 x 轴的某些值放置刻度线并仍然为其他值保留垂直线

转载 作者:行者123 更新时间:2023-12-04 11:28:07 24 4
gpt4 key购买 nike

我正在 R 中使用 ggplot2 创建时间序列。我想知道如何仅在标记的月份(例如 Mar 07、Mar 08 等)的 x 轴上显示刻度线,同时保持垂直灰线每个月。

主要原因是因为每个月都有一个刻度线,很难知道哪个对应于标签。

这是一个情节的例子:

See how ticks on the x-axis make it hard to know where is each month

这是后面的R行:

ggplot(timeseries_plot_data_mean,aes(as.numeric(project_date)))+
geom_line(aes(y=num_views))+geom_point(aes(y=num_views))+
stat_smooth(aes(y=num_views),method="lm")+
scale_x_continuous(breaks = xscale$breaks, labels = xscale$labels)+
opts(title="Monthly average num views")+xlab("months")+ylab("num views")

这就是要生成的内容。看看刻度线是如何定位在月份标签正上方的,并且每个月的垂直线仍然在那里显示。

This is what would like to generate (Inkscape, image editor,strangely replaced the dots for q's

我使用 Inkscape 手动编辑了上面的图,(忽略 q,Inkscape 奇怪地替换了 q 的点)

最佳答案

这是使用 minor_breaks 的解决方案scale_x_date() 的参数.要使用它,您的 x 值必须属于 Date 类。而不是 numeric .

library(ggplot2)
set.seed(123)

x <- seq(as.Date("2007/3/1"), as.Date("2012/4/1"), by = "1 month")
y <- ((exp(-10 * seq(from=0, to=1, length.out=length(x))) * 120) +
runif(length(x), min=-10, max=10))

dat <- data.frame(Months=x, Views=y)

x_breaks <- seq(as.Date("2007/3/1"), as.Date("2012/4/1"), by="1 year")
x_labels <- as.character(x_breaks, format="%h-%y")

plot_1 <- ggplot(dat, aes(x=Months, y=Views)) +
theme_bw() +
geom_line() +
geom_point() +
scale_x_date(breaks=x_breaks, labels=x_labels, minor_breaks=dat$Months)

png("plot_1.png", width=600, height=240)
print(plot_1)
dev.off()

plot_1.png

关于r - 如何告诉 R 的 ggplot2 为 x 轴的某些值放置刻度线并仍然为其他值保留垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com