2016-07-04 105 views
0

使用R中的plotly包,我想做一個平面圖。實際上,我需要在圖形中添加一條密度線。我有一個地區的一些上市公司的收入信息的數據。這樣在R中,在一個密度圖中添加一條跡線

head(data) 
id income region 
    1  4556  1 
    2  6545  1 
    3 65465  2 
    4 54555  1 
    5 71442  2 
    6  5645  6 

東西在第一關鍵時刻,我分析了5對6各地區和下面的密度圖

reg56<- data[data$region %in% c(5,6) , ] 
dens <- with(reg56, tapply(income, INDEX = region, density)) 
df <- data.frame(
x = unlist(lapply(dens, "[[", "x")), 
y = unlist(lapply(dens, "[[", "y")), 
cut = rep(names(dens), each = length(dens[[1]]$x)) 
) 

# plot the density 
p<- plot_ly(df, x = x, y = y, color = cut) 

收入不過,我想比這更多。我想增加總收入,即所有地區的收入。我試過這樣的東西

data$aux<- 1 
dens2 <- with(data, tapply(income, INDEX = 1, density)) 
df2 <- data.frame(
x = unlist(lapply(dens2, "[[", "x")), 
y = unlist(lapply(dens2, "[[", "y")), 
cut = rep(names(dens2), each = length(dens2[[1]]$x))) 

p<- plot_ly(df, x = x, y = y, color = cut) 
p<- add_trace(p, df2, x = x, y = y, color = cut) 
p 
Error in FUN(X[[i]], ...) : 
'options' must be a fully named list, or have no names (NULL) 

有些解決方案呢?

回答

1

因爲您沒有命名您傳遞給add_trace的參數,所以它將它們解釋爲對應於默認參數順序。的add_trace用法是

add_trace(p值= last_plot(),...,組,顏色,顏色,符號,符號, 大小,數據= NULL,評價= FALSE)

因此,在您提供data.frame df2作爲第二個參數的函數調用中,假定這對應於參數...,該參數必須是一個命名列表。您需要指定data = df2,以便add_trace瞭解此參數。

讓我們產生了一些假的數據來證明對

library(plotly) 
set.seed(999) 
data <- data.frame(id=1:500, income = round(rnorm(500,50000,15000)), region=sample(6,500,replace=T)) 

現在,(計算dfdf2在你的例子後):

p <- plot_ly(df, x = x, y = y, color = cut) %>% 
    add_trace(data=df2, x = x, y = y, color = cut) 
p 

enter image description here

相關問題