8

エクセルでカレンダーを作り始めたのですが、Rでも簡単に作れるのではないかと思いました。(注: さまざまなヒートマップ カレンダー パッケージを認識していますが、私はggplot2. Y 軸 (上が第 1 週、下が第 4 または第 5 週) と X 軸に沿った曜日 (月曜日から開始)。

これは 15 分の作業 (すべての月のデータを作成し、 を使用して少しフォーマットしてreshapeから使用するfacet_wrap) だと思っていましたが、以下のプロットが示すように、ほとんどすぐに問題に遭遇しました。週は大丈夫そうです。R でのデータの順序付けは、私の天敵です。私は本当にこれを処理する必要があります。とにかく、下の画像は私がこれまでに持っているものを示しており、コードはその下にあります。これは単なる楽しいプロジェクトであり、緊急ではありませんが、助けや装飾は大歓迎です。

カレンダー

require(ggplot2)
require(scales)
require(lubridate)

date.start <- as.Date('2013-09-01')
date.end <- date.start + months(1)

mydf <- data.frame(mydate = seq(as.Date(date.start),
                       as.Date(date.end) - days(1),
                       by = 'day'))

mydf$month <- month(mydf$mydate)
mydf$week <- week(mydf$mydate)
mydf$day <- day(mydf$mydate)
mydf$dow <- as.factor(format(mydf$mydate, format = "%a"))
levels(mydf$dow) <- c('Mon','Tue','Wed','Thu','Fri','Sat','Sun')

ggplot(mydf, aes(x = dow, y = as.factor(week))) +
    geom_tile(colour = "black", fill = "white", label = mydf$day) +
    geom_text(label = mydf$day, size = 4, colour = "black") +
    scale_x_discrete(expand = c(0,0)) +
    theme(axis.ticks = element_blank()) +
    theme(axis.title.y = element_blank()) +
    theme(axis.title.x = element_blank()) +
    theme(panel.background = element_rect(fill = "transparent"))+
    theme(legend.position = "none") +
    theme()
4

3 に答える 3

4

どうぞ:

start <- as.Date("2013-09-1")
numdays <- 30

weeknum <- function(date){
  z <- as.Date(date, format="%Y-%m-%d")
  as.numeric( format(z-1, "%U"))
}


dates <- data.frame(date=seq(start, length.out=numdays, by="1 day"))
dates <- within(dates, {
  weeknum <- weeknum(date)
  month   <- format(date, "%m")
  weekday <- format(date, "%a")
  day     <- format(date, "%d")
})

dates$weekday <- factor(dates$weekday, levels=c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"))

library(ggplot2)
ggplot(dates, aes(x=weekday, y=weeknum)) + 
  geom_tile(fill="blue", col="white") +
  geom_text(aes(label=day)) 

ここに画像の説明を入力

于 2013-09-11T13:39:00.487 に答える