r - 从 R 中的两个数据框创建的线图的 Plotly 子图的单个图例

标签 r plotly r-plotly

我正在尝试从两个数据框绘制折线图,​​其中两个数据框的第一列将绘制在一个框架中,依此类推。最后,所有 plotly 都将放在一个子 plotly 下。但是我得到了多个具有相同符号的图例。数据框是-

d1 <- data.frame(x = 1:5,
                 y = c(2, 3, 4, 1, 5),
                 z = c(2, 1, 4, 6, 8))

d2 <- data.frame(x = 1:5,
                 y = c(1, 5, 8, 9, 11),
                 z = c(3, 5, 8, 13, 11))

我试图生成子图的代码是-

py <-
  plot_ly(
    x = d1$x,
    y = d1$y,
    type = "scatter",
    mode = "lines",
    name = names(d1)[2],
    line = list(color = "#56B4E9")
  ) %>% add_trace(y = d2$y,
                  name = names(d1)[3],
                  line = list(color = "#D55E00"))

pz <-
  plot_ly(
    x = d1$x,
    y = d1$z,
    type = "scatter",
    mode = "lines",
    name = names(d1)[2],
    line = list(color = "#56B4E9")
  ) %>% add_trace(y = d2$z,
                  name = names(d1)[3],
                  line = list(color = "#D55E00"))

subplot(py, pz)

输出是- enter image description here

有什么办法可以去掉重复的图例吗?

提前致谢。

最佳答案

这可以通过首先将数据置于正确的形状中来实现,这也可以简化绘图。简单地行绑定(bind)你的 dfs 例如通过 dplyr::bindrows 并且您拥有设置 legendgroup 所需的变量。此外,您的颜色不反射(reflect)变量 y 和 z,而是反射(reflect)数据集。试试这个:

library(dplyr)
library(plotly)

d1 <- data.frame(x = 1:5,
                 y = c(2, 3, 4, 1, 5),
                 z = c(2, 1, 4, 6, 8))

d2 <- data.frame(x = 1:5,
                 y = c(1, 5, 8, 9, 11),
                 z = c(3, 5, 8, 13, 11))

# Bind the dfs
d3 <- bind_rows(list(d1 = d1, d2 = d2), .id = "id")

py <- d3 %>% 
  plot_ly(x = ~x, y = ~y, color = ~id, legendgroup= ~id) %>% 
  add_lines(colors = c("#D55E00", "#56B4E9"))

pz <- d3 %>% 
  plot_ly(x = ~x, y = ~z, color = ~id, legendgroup= ~id) %>% 
  add_lines(colors = c("#D55E00", "#56B4E9"), showlegend = FALSE)

subplot(py, pz) %>% 
  layout(legend=list(title=list(text='<b> Dataset </b>')))

reprex package 创建于 2020-04-10 (v0.3.0)

enter image description here

关于r - 从 R 中的两个数据框创建的线图的 Plotly 子图的单个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61138732/

相关文章:

r - 通过ggplot在密度图中添加部分数据

r - 使用ggplotly将ggplot geom-tile转换为plotly图表的问题

r - 使用 R 中的线迹创建堆叠条形图的辅助轴

javascript - 通过单击堆叠的条形图打开选项卡

旋转 Markdown 的表格 pdf 输出

R v3.4.0-2 在 Arch 上无法找到 libgfortran.so.3

plotly - 无法让多个输入和输出在 Dash 中工作

python - 在 RMarkdown html 文档中显示 python plotly 图形

删除 Plotly 中条形之间的间隙

r - 获取R函数的参数名称