7

R で ggplot2 を使用して時系列を作成しています。垂直の灰色の線を維持しながら、ラベル付けされた月 (07 年 3 月、08 年 3 月など) のみ x 軸に目盛りを表示する方法を知りたいです。毎月。

主な理由は、月ごとに目盛りを付けると、どれがラベルに対応するのかわかりにくくなるためです。

プロットの例を次に示します。

X 軸の目盛りによって、各月がどこにあるのかわかりにくくなっている様子をご覧ください

後ろの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")

これが生成したいものです。目盛りが月ラベルの真上にどのように配置され、垂直線がまだ各月を示しているかを確認してください。

これは生成したいものです(Inkscape、画像エディター、奇妙にqのドットを置き換えました

上記のプロットを Inkscape を使用して手動で編集しました (q は無視してください。Inkscape は奇妙に q のドットを置き換えました)。

4

1 に答える 1

9

minor_breaksのパラメータを使用した解決策を次に示しますscale_x_date()Dateこれを使用するには、x値が。ではなくクラスである必要があります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

于 2012-07-11T22:42:52.527 に答える