2015-06-17 4 views
2

Я хочу построить лет по сравнению с населением и имеют очень простой R участок приведен ниже:Как пометить годы во времени и популяции?

enter image description here

Здесь R код участка:

dat <- data.frame(population, year) 
year <- c(1518,1523,1569,1642,1871,1872,1873,1874,1875,1876,1877,1894,1897,1898,1899,1900, 1914,1927) 
population <- c(753,2407,4414,1800,7896,6594,6594,6594,6594,6594,6615,8583,8583,8583,7470,7540,12266,10573) 
offsets <- c(1, with(dat, ifelse(dat$population[-1] < dat$population[-  nrow(dat)], -1, 1))) 
plot(population ~ year, data=dat, type="l") 
points(dat$year, dat$population) 
text(dat$year-10, dat$population+500*offsets, labels=round(dat$year,0)) 

Я хочу лет появляться рядом маленькие круги. Это возможно? Я использовал identify(year,population), но это просто цифры кругов, как 1,2,3, ..., что не то, что я хочу. Любая помощь?

ответ

1

Вы можете использовать text

dat <- data.frame(pop=seq.int(2000,12000,len=20)+rnorm(20,0,2000), 
        year=seq.int(1500,1900,len=20)) 

plot(pop ~ year, data=dat, type="l") 
text(dat$year, dat$pop, labels=round(dat$year,0)) 

enter image description here

Если вы хотите, чтобы попытаться сделать эти годы компенсировано немного, вот начало,

offsets <- c(1, with(dat, ifelse(pop[-1] < pop[-nrow(dat)], -1, 1))) 
plot(pop ~ year, data=dat, type="l") 
points(dat$year, dat$pop) 
text(dat$year-10, dat$pop+500*offsets, labels=round(dat$year,0)) 

enter image description here

Смещения являются всего лишь вектором 1 или -1, определяемые предыдущей популяцией, меньшей или большей, чем текущая.

+0

Это работает, спасибо. Однако в моем наборе данных несколько лет очень близки друг к другу. Поэтому названия года написаны очень близко друг к другу, что затрудняет чтение лет. Есть ли решение для этого? Я добавил сюжет, который я получаю выше –

+0

, см. Edit, будет ли это работать? – jenesaisquoi

+0

Это выглядит просто чудесно, приветствия –

Смежные вопросы