使用Plotly根据来自同一数据框的列值绘制图形线

时间:2019-07-09 13:36:02

标签: r dplyr plotly

我正在尝试在** R **上的**地**中绘制每天售出的不同类型汽车的折线图。该图的外观是,它具有每天售出的每种汽车的折线图。所以可以说我的数据帧叫做** df1 **

id      date       Value 
Honda    10/30/12   2
Honda    10/31/12   3
Honda    11/1/12    3
Merc     11/2/12    4
Merc    10/30/12    1
Merc    10/31/12    2
Toyota   11/1/12    3
Toyota   11/3/12    2

现在,我希望在同一x轴上显示三行(每种类型的汽车一行)。

我尝试在filter()参数中使用内部的y axis函数,如下所示:

plot_ly(df1,x=~date)%>% 
add_trace(y=filter(df1,id=="Honda")$value,name="Honda",mode="lines+markers")%>%
add_trace(y=filter(df1,id=="Merc")$value,name="Honda",mode="lines+markers")%>%
add_trace(y=filter(df1,id=="Toyota")$value,name="Honda",mode="lines+markers")%>%
layout(xaxis=list(title="Date"),yaxis=list(title="Cars Sold"))

但是我遇到错误

  

错误:标题列必须具有一致的长度,只有长度为1的值才被回收:   *长度3:第y列   *长度8:列x   呼叫`rlang :: last_erro()

我发现由于x值较多而y值较少而引发错误,我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

我没有看到相同的错误(未指定跟踪类型,它绘制了直方图)。

df1 %>%
  group_by(id) %>%
  plot_ly(x=~date, y=~Value, type='scatter', color=~id, mode="lines+markers") %>%
  layout(xaxis=list(title="Date"),yaxis=list(title="Cars Sold"))

您不需要按每种汽车类型进行过滤。而是在调用plot_ly之前使用group_by ---也许这就是您要记住的:

server {
    listen 80;
    location / {
        proxy_pass http://localhost:8080;
    }
}

plot of cars sold vs. date using plotly