2014-11-10 8 views
1

Я хотел бы, чтобы устранить зазор между x и y осями в barplot и расширить прогнозируемую линию обратно пересекает ось y, предпочтительно в базе R. Это возможно? Благодарим вас за любые советы или предложения.присоединиться к оси в barplot

my.data <- read.table(text = ' 
    band mid.point count 
    1  0.5  74 
    2  1.5  73 
    3  2.5  79 
    4  3.5  70 
    5  4.5  78 
    6  5.5  63 
    7  6.5  59 
    8  7.5  60 
', header = TRUE) 
my.data 

x <- my.data$mid.point^2 

my.model <- lm(count ~ x, data = my.data) 

my.plot <- barplot(my.data$count, ylim=c(0,100), space=0, col=NA) 
axis(1, at=my.plot+0.5, labels=my.data$band) 
lines(predict(my.model, data.frame(x=x), type="resp"), col="black", lwd = 1.5) 

enter image description here

+2

добавить 'i'' xaxs =» внутри barplot. это то, что вы спрашиваете? Что касается линии, она предсказывает данные, которые вы предоставили, то есть 'x' – rawr

+0

@rawr Спасибо. Я попытался использовать 'x = c (0, x)' перед публикацией и вместо продолжения линии на ось y изменил наклон существующей строки. Я должен был упомянуть об этом в своем посте. Команда 'xaxs' была очень полезной. –

ответ

0

EDIT 26 ноября 2014

Я просто понял, что два участка не совпадают (сюжет в исходное сообщение и сюжет в моем ответе ниже). Сравните две изогнутые линии, особенно в правой части сюжета. Очевидно, что две изогнутые линии пересекают верхнюю часть 8-го бара в разных местах. Тем не менее, я еще не успел выяснить, почему графики отличаются.

Вот один из способов экстраполяции предсказанной линии назад на ось y. Я включил предложение rawr относительно устранения зазора между осью y и осью x.

setwd('c:/users/markm/simple R programs/') 

jpeg(filename = "barplot_and_line.jpeg") 

my.data <- read.table(text = ' 
    band mid.point count 
    1  0.5  74 
    2  1.5  73 
    3  2.5  79 
    4  3.5  70 
    5  4.5  78 
    6  5.5  63 
    7  6.5  59 
    8  7.5  60 
', header = TRUE) 

x <- my.data$mid.point^2 

my.model <- lm(count ~ x, data = my.data) 

z <- seq(0,8,0.01) 
y <- my.model$coef[1] + my.model$coef[2] * z^2 

barplot(my.data$count, ylim=c(0,100), space=0, col=NA, xaxs = 'i') 
points(z, y, type='l', col=1) 

dev.off() 

enter image description here

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