【问题标题】:Second Y-Axis in a R plotly graphR 图中的第二个 Y 轴
【发布时间】:2017-01-15 18:06:06
【问题描述】:

我合并了 2 个图表并尝试添加第二个 y 轴,但每次我将 yaxis = "y2" 添加到我的代码中时,我都会失去我的条形图。

>    MediaDate     Spend Search_Visits Other_Visits MediaDate2 
> 2016-04-01 $39654.36         19970         2899   Apr 2016 
> 2016-05-01 $34446.28         14460         2658   May 2016  
> 2016-06-01 $27402.36         12419         2608   Jun 2016

我原来的代码是:

p <- plot_ly(x= w$MediaDate2,y=w$Search_Visits,name = "Paid Search",
type = "bar")
p2 <- add_trace(p, x=w$MediaDate2, y=w$Other_Visits,name = "Other Traffic",
type = "bar")
spend_visits <- layout(p2, barmode = "stack")
spendvisits2 <- spend_visits %>% add_trace(data=w, x=MediaDate2,  y=round(Spend,0), fill="tonexty", mode="lines",
                       text=w$MediaDate2, hoverinfo='name+y+text', name="Spend") 

当我添加 yaxis="y2" 时,只剩下面积图:

`spendvisits2 <- spend_visits %>% add_trace(data=w, x=MediaDate2,     y=round(Spend,0), yxis="y2" fill="tonexty", mode="lines",
                       text=w$MediaDate2, hoverinfo='name+y+text',  name="Spend")` 

任何建议都会非常有帮助。谢谢

【问题讨论】:

    标签: r graph plotly axis-labels


    【解决方案1】:

    查看此快速Plotly tutorial 了解多个轴。您需要在layout() 中指定第二个y 轴的属性。

    df <- data.frame(MediaDate = as.Date(c("2016-04-01","2016-05-01","2016-06-01"), format = "%Y-%m-%d"),
                     Spend = c(39654, 34446, 27402),
                     Visits = c(19970, 14450, 12419))
    
    plot_ly(df, x = ~MediaDate, y = ~Spend, type = "bar", name = "Spend") %>%
      add_trace(x = ~MediaDate, y = ~Visits, mode = "lines", yaxis = "y2", name = "Visits") %>%
      layout(yaxis2 = list(overlaying = "y", side = "right"))
    

    【讨论】:

    • 谢谢,代码运行良好!我知道要创建面积图,我需要添加代码 [fill="tozeroy"]。但是有没有办法在区域上重叠条形图?
    • "'bar' 对象没有这些属性:'mode'" 我收到此错误,
    • 是否有一种解决方案可以生成我认为 op 要求的分组条?
    【解决方案2】:

    试试这个

    plot_ly(df) %>%
      add_trace(x = ~MediaDate, y = ~Spend,type = "bar",  name = "Spend") %>%  
      add_trace(x = ~MediaDate, y = ~Visits, mode = "lines", yaxis = "y2", name = "Visits") %>%
      layout(yaxis2 = list(overlaying = "y", side = "right"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多