rAmCharts Рассеянный график с верхним и нижним доверительным интервалом вокруг значений Fitted

1

Я пытаюсь создать график Scatter с rAmCharts с линией трендов, которая также будет включать интервал Upper и Lower Confidence для Fitted values.

Ниже приведены мои данные вместе с основным доверительным интервалом:

Data = data.frame(ax = rnorm(50), ay = rnorm(50))
                                            Data = cbind(Data, predict(lm(Data$ay ~ Data$ax - 1), newdata = data.frame(x = Data$ax), interval = 'prediction'))
                                            Data = Data[order(Data$ax), , drop = FALSE]

Кроме того, реализация rAmCharts для данных выше:

amChart_Plot = amXYChart() %>%
                  setDataProvider(dataProvider = Data, keepNA = TRUE) %>%
                  addGraph(xField = "ax", yField = 'ay', bullet = 'round', lineAlpha = 0, bulletAlpha = 0.8, bulletSize = 15) %>%   
                  addGraph(xField = "ax", yField = 'fit', bullet = 'round', lineAlpha = 0.5, bulletAlpha = 0, linetSize = 45, lineColor = '#d202fc') %>%                                                             
                  setBalloon(cornerRadius = 12, textAlign = "left", maxWidth = 1300)

amChart_Plot@valueAxes = list(list(title = paste('X-Axis', sep = ""), 
                            labelFunction = JS("function(value) {return value+'%';}"), position = 'bottom', titleBold = FALSE),
                            list(title = paste('Y-Axis', sep = ""), 
                            labelFunction = JS("function(value) {return value+'%';}"), position = 'left', titleBold = FALSE))   

amChart_Plot

Как вы видите, хотя я могу создать Trendline с установленными значениями, однако не мог включить доверительный интервал Upper и Lower с Областью в пределах этого интервала, который может быть заполнен.

Я искал сеть, однако все примеры, с которыми я столкнулся, - это только добавить строку Тренда.

Любые указатели, как заполнить область в верхнем и нижнем доверительных интервалах для установленных значений, будут высоко оценены.

Теги:
amcharts

1 ответ

1
Лучший ответ

Вот возможное решение.

library(rAmCharts)
library(dplyr)
library(htmlwidgets)
set.seed(11223344)
Data = data.frame(ax = rnorm(50), ay = rnorm(50))
Data = cbind(Data, predict(lm(Data$ay ~ Data$ax - 1), 
                   newdata = data.frame(x = Data$ax), interval = 'prediction'))
Data = Data[order(Data$ax), , drop = FALSE]

# Create a data set with the coordinates of the border around the area
Data2 <- data.frame(
           x = c(Data$ax[1],Data$ax,rev(Data$ax)), 
           y = c(Data$lwr[1],Data$upr,rev(Data$lwr))
         )
# Put variables of "Data" into "Data2" (and fill with NAs)
Data2$ax <- c(Data$ax, rep(NA,nrow(Data2)-nrow(Data)))
Data2$ay <- c(Data$ay, rep(NA,nrow(Data2)-nrow(Data)))
Data2$fit <- c(Data$fit, rep(NA,nrow(Data2)-nrow(Data)))

amChart_Plot <- amXYChart() %>%
    setDataProvider(dataProvider = Data2, keepNA = TRUE) %>%
    addGraph(xField = "ax", yField = "ay", bullet = 'round', lineAlpha = 0, 
             bulletAlpha = 0.8, bulletSize = 15) %>%   
    addGraph(xField = "ax", yField = "fit", bullet = 'round', lineAlpha = 0.5, 
             bulletAlpha = 0,  lineThickness = 4, lineColor = '#d202fc') %>%    
    addGraph(xField = "x", yField = "y", bullet = 'round', bulletColor="transparent", 
             lineAlpha = 0.1, fillAlphas = 0.1, linetSize = 45, lineColor = '#0000FF') %>%
    setBalloon(cornerRadius = 12, textAlign = "left", maxWidth = 1300)

amChart_Plot@valueAxes = list(
    list(title = paste('X-Axis', sep = ""), 
         labelFunction = JS("function(value) {return value+'%';}"), 
         position = 'bottom', titleBold = FALSE),
    list(title = paste('Y-Axis', sep = ""), 
          labelFunction = JS("function(value) {return value+'%';}"), 
          position = 'left', titleBold = FALSE)
    )     
amChart_Plot

Изображение 174551

  • 0
    Отлично спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню