2015-09-17 1 views
0

Я работаю с кадром данных, называемым d в R. Я хочу построить график разброса с использованием двух столбцов, включая линию наилучшего соответствия регрессии, а также заархивированные объекты. Я вычислил центры бункеров и биндинговых средств и включил их как столбцы в кадре данных. Я могу сделать график рассеяния и регрессионную линию, но не могу получить биннированные средства для отображения. Используя приведенный ниже код, я не получаю ошибок, но функция panel.points не отображается.Функции панели в решетке с использованием разных данных

scatter.Epsilon <- xyplot(Epsilon ~ data.subset.UpdatedVS30.091015, 
         data = d, 
         grid = TRUE, 
         scales = list(x = list(log = 10)), 
         xlab = "Vs30 (m/s)", 
         ylab = "Epsilon", 
         ylim = c(-4, 3), 
         xlim = c(10^2,10^3.4), 
         subscripts = TRUE, 
         panel=function(x,y,subscripts,...) { 
         panel.xyplot(x,y) 
         panel.abline(mod <- lm(y ~ x), col = 'black') 
         panel.points(d$bin.ep[subscripts], d$means.ep[subscripts], 
            col = 'red')}) 
         scatter.Epsilon 

упрощенный набор данных был бы:

dist <- rnorm(10,4,100) 
    x <- seq(1,100) 
    bin <-rep(50,100) 
    mean <- rep(mean(dist),100) 
    d <- data.frame(x,dist,bin,mean) 

, где расстояние ~ х компонент рассеивания, а значит, представляет собой среднее значение для Binned точек данных между 1-100, а бин является центром Биня (на 50). Я хочу добавить одну точку в (bin, mean) поверх dist ~ x. У моего реального набора данных есть несколько ящиков и средств на основе data.subset.UpdatedVS30.091015, которые я хочу добавить поверх Epsilon ~ data.subset.UpdatedVS30.091015.

+0

Можете ли вы предоставить некоторый код, который будет генерировать dataframe d? или что-то с той же структурой? Является ли data.subset компонентом d или что-то еще вообще? – atiretoo

+0

Я обновил свой первоначальный вопрос с помощью упрощенного фрейма данных - надеюсь, это поможет. data.subset.UpdatedVS30.091015 является компонентом d, изначально была опечаткой. Спасибо. – GAP

ответ

0

Возможно, вы пытаетесь сделать слишком много работы в вызове panel.points. Используя ваши данные примера, этот код работает нормально:

scatter.Epsilon <- xyplot(dist ~ x, 
         data = d, 
         grid = TRUE, 
         subscripts = TRUE, 
         panel=function(x,y,subscripts,...) { 
         panel.xyplot(x,y) 
         panel.abline(mod <- lm(y ~ x), col = 'black') 
         panel.points(bin,mean,col = 'red')}) 

и отображает красную точку прямо там, где это должно быть. Вы пробовали только

panel.points(bin.ep,means.ep,col='red') 

В вашей формуле нет переменной группировки, поэтому нет необходимости в индексах.

+0

Спасибо, упрощенный пример работает и для меня. Однако использование упрощенного аргумента panel.points в моем исходном коде не решает проблему. Не могу понять, почему нет! – GAP

+0

, возможно, использовать dput для размещения случайной выборки вашего DataFrame d вместо созданного образца. – atiretoo