Я пытаюсь создать график 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 с Областью в пределах этого интервала, который может быть заполнен.
Я искал сеть, однако все примеры, с которыми я столкнулся, - это только добавить строку Тренда.
Любые указатели, как заполнить область в верхнем и нижнем доверительных интервалах для установленных значений, будут высоко оценены.
Вот возможное решение.
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