在我的图表中看不到任何线条图,即使我的代码是正确的

时间:2018-02-15 17:36:29

标签: r

我想在同一个图表中绘制4条销售线,每条线显示这种类型的magasin的销售额:a,b,c和d。

dataa<-data[which(StoreType=="a"),]
datab<-data[which(StoreType=="b"),]
datac<-data[which(StoreType=="c"),]
datad<-data[which(StoreType=="d"),]

例如:

datac
              Date StoreType       V1
 1: janvier_2013           c 26498298
 2: février_2013           c 24151938
 3: mars_2013              c 26881214
 4: avril_2013             c 25097237
 5: mai_2013               c 26713190
 6: juin_2013              c 26145149

然后我创建了水平轴,即日期轴:

Date<-unique(as.factor(data$Date))
unique(data$Date)
 [1] "janvier_2013  " "février_2013  " "mars_2013     " "avril_2013    " "mai_2013      " "juin_2013     " "juillet_2013  "
 [8] "août_2013     " "septembre_2013" "octobre_2013  " "novembre_2013 " "décembre_2013 " "janvier_2014  " "février_2014  "
[15] "mars_2014     " "avril_2014    " "mai_2014      " "juin_2014     " "juillet_2014  " "août_2014     " "septembre_2014"
[22] "octobre_2014  " "novembre_2014 " "décembre_2014 " "janvier_2015  " "février_2015  " "mars_2015     " "avril_2015    "
[29] "mai_2015      " "juin_2015     " "juillet_2015  "

然后我创建包含31行的日期框架:

Data2<-data.frame(Date,dataa,datab,datac,datad)

最后,我使用此代码绘制图形,并且没有任何错误,它工作正常:

ibrary(dplyr)
library(plotly)
p <- plot_ly(Data2, x = ~Date, y = ~dataa, name = 'Sales magazin a', type = 'scatter', mode = 'lines',
             line = list(color = 'rgb(205, 12, 24)', width = 4)) %>%
  add_trace(y = ~datab, name = 'Sales magazin b', line = list(color = 'rgb(22, 96, 167)', width = 4)) %>%
  add_trace(y = ~datac, name = 'Sales magazin c', line = list(color = 'rgb(205, 12, 24)', width = 4, dash = 'dash')) %>%
  add_trace(y = ~datad, name = 'Sales magazin d', line = list(color = 'rgb(22, 96, 167)', width = 4, dash = 'dash')) %>%
  layout(title = "Somme des ventes pour chaque magazin",
       xaxis = list(title = "Months_year"),
       yaxis = list (title = "Sales"))
p

但是我得到了这个空图:

enter image description here

你如何解释和解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的数据框由多个数据框组成。例如,请查看str(dataa)。对于绘图,您需要引用列(~ Date),而不是数据帧(~dataa)。

您应该以某种方式重新组织数据,以便每个商店的数据都在一列中。在不更改代码的情况下,您可以对所有子集执行以下操作,然后按照以下步骤操作:

dataa<-data[which(StoreType=="a"),V1]
...

但是,如果不是每个组都按月正确排序,则使用data.frame加入一组子集可能会导致错误。一个整洁的方法将有助于确保每个商店的日期正确对齐:

library(tidyr)
library(dplyr)

Data2 <- data %>%
           mutate(StoreType = paste0("data", StoreType)) %>% 
           spread(key = StoreType, value = V1)   

然后在plot_ly的{​​{1}}版本上使用Data2功能。