Я хочу нарисовать диаграмму рассеяния в год и месяц - PullRequest
0 голосов
/ 10 мая 2018

У меня есть неаккуратные данные Сеула (число общей смертности без учета несчастных случаев) и данные их дат. Это образец данных. data1 имеет не доступные данные и данные о дате.

head(data1$date)
[1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05"
[6] "2000-01-06"

tail(data1$date)
[1] "2007-12-26" "2007-12-27" "2007-12-28" "2007-12-29" "2007-12-30"
[6] "2007-12-31"

head(seoul$nonacc)
[1] 139 144 130 149 143 136

Я хочу нарисовать связь между датой и nonacc как график рассеяния. Но я хочу нарисовать точечный график, разделенный на год и месяц.

Итак, я попробовал это, но их результаты такие же ...

Это график разброса месяцев, который я пробовал.

 plot(seoul$date,seoul$nonacc, 
      xlab="Date", ylab="Nonaccidental Mortality", 
      xaxt="n")
 seq(as.Date("2000-01-01"), as.Date("2002-12-31"),"day")
 x.at <- seq(as.Date("2000-01-01"), as.Date("2007-12-31"),"month")
 xname = seq(2000, 2007, 1)
 axis(side=1, at=x.at, labels=x.at, las=1)

Это график разброса по годам, который я пробовал.

 plot(seoul$date,seoul$nonacc, 
      xlab="Date", ylab="Nonaccidental Mortality", 
      xaxt="n")
 seq(as.Date("2000-01-01"), as.Date("2002-12-31"),"day")
 x.at <- seq(as.Date("2000-01-01"), as.Date("2007-12-31"),"year")
 xname = seq(2000, 2007, 1)
 axis(side=1, at=x.at, labels=x.at, las=1)

Помогите мне, пожалуйста.

1 Ответ

0 голосов
/ 10 мая 2018

Если вы согласны с использованием ggplot2, вы можете отформатировать разрывы по оси x, используя scale_x_date.

library(ggplot2)

load("~/Downloads/mort.rda")
seoul <- subset(mort, cname=="sl")

# plot with months as major breaks
# limit data to year 2000
seoul_2001 <- subset(seoul, date >= "2000-01-01" & date < "2001-01-01")
ggplot(seoul_2001, aes(x=date, y=nonacc)) +
  geom_point() +
  scale_x_date(date_breaks="1 month", date_labels="%b")

# plot with year as major breaks and month as minor
ggplot(seoul, aes(x=date, y=nonacc)) +
  geom_point() +
  scale_x_date(date_breaks = "1 year", date_minor_breaks = "1 month", date_labels="%Y")

Первый участок:

enter image description here

Второй участок:

enter image description here

...