【问题标题】:Multiple y-axes chart with Plotly in RR中带有Plotly的多个y轴图表
【发布时间】:2016-12-20 18:53:10
【问题描述】:

在 Python 的 Plotly 中,我们有这个漂亮的多 y 轴示例: 这是代码的link

我尝试使用以下代码对 R 中的 Plotly 做同样的事情:

  library(plotly)

x <- 1:4
y1 <- c(1,2,3,4)
y2 <- c(4,3,2,1)
y3 <- c(1,4,1,4)
y4 <- c(4,1,4,1)

test <- data.frame(x, y1, y2, y3, y4)

plot_ly(data = test, x = ~x, y = ~y1
        ,type = "scatter", mode = "lines", width = 800, color = I("red")
        ,name = "name01") %>%
  add_trace(x = ~x, y = ~y2, yaxis = "y2", color = I("blue"), name = "name02") %>%
  add_trace(x = ~x, y = ~y3, yaxis = "y3", color = I("purple"), name = "name03") %>%
  add_trace(x = ~x, y = ~y4, yaxis = "y4", color = I("green"), name = "name04") %>%
  layout(
    yaxis = list(
      showline = FALSE, side = "left"
      ,title = "Label 1"
      ,color = "red"
    )
    ,yaxis2 = list(
      showline = FALSE
      ,overlaying = "y"
      ,title = "Label 2", anchor = "free"
      ,color = "blue"
    )
    ,yaxis3 = list(
      showline = FALSE, side = "right", overlaying = "y"
      ,title = "Label 3"
      ,color = "purple"
    )
    ,yaxis4 = list(
      showline = FALSE, side = "right", overlaying = "y", position = 1
      ,title = "Label 4", anchor = "free"
      ,color = "green"
    )
    ,xaxis = list(
      showline = FALSE, zeroline = FALSE, dtick = 1, title = ""
    )
    ,showlegend = FALSE
    ,margin = list(
      pad = 30, b = 90, l = 150, r = 90
    )
    ,legend = list(orientation = "h")
  )

但我得到了这些重叠的标签:

如何修复它以获得不重叠的图表?

【问题讨论】:

    标签: r plotly


    【解决方案1】:

    尝试调整 layout()margin 参数的填充 (pad) 值。

    我发现你的其他参数最好的是pad = 49

    【讨论】:

    • 基于此讨论 community.plotly.com/t/…,您还可以使用 xaxis = list(domain=c(0,.9)) 限制 x 轴的范围,以便为额外的 y 轴腾出更多空间。然后,您可以使用 position 放置 y 轴。在这种情况下,position 将介于 0.9 和 1 之间。
    • @simoet 上面的评论效果很好!!!特别是如果图例和次轴重叠
    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 2020-07-19
    • 2022-07-06
    • 2020-11-12
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多