R中单个图上的可变轴

时间:2018-11-24 23:56:29

标签: r drop-down-menu plotly axis

我正在尝试使用plotly生成带有2个下拉按钮(一个用于x轴,一个用于y轴)的绘图,这将允许我更改相关轴上的数据,比例,标签等,从而创建一个散点图,可以比较任一轴上的任意两列数据。我了解如何制作下拉按钮:

p <- plot_ly(df, x = ~x, y= ~y1) %>%
 layout(
 xaxis = list(domain = c(0.1, 1)),
 yaxis = list(domain = c(0.1, 1)),
 updatemenus = list(
   list(
     y = 1.1,    # This is the location of the vertical axis button
     x= 0.5,
     buttons = list(
       list(method = "update",
          args = list(list("visible", list(T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F)),
          label = colnames(df)[1]),
       list(method = "update",
          args = list(list("visible", list(T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F)),
          label = colnames(df)[1]), # etc

我正在努力做些什么,我将如何更新发送到绘图的数据?

1 个答案:

答案 0 :(得分:0)

EDIT我已经弄清楚了通过将下拉列表中的post从Python转换为R来使用下拉按钮更改特定轴上的数据的语法。代码如下:

p <- plot_ly(df, x= df[,1], y= df[,2],
             mode= "markers", type= "scatter", 
             color= ~df[,3],) %>%
layout(
updatemenus = list(
  list(
    x= 0.46, y = 1.1,
    yanchor= "top",
    buttons = list(
      list(args = list(list(y= list(df[,1]))),
           label = colname(df[,1]), method = "restyle"),
      list(args = list(list(y= list(df[,2]))),
           label = colname(df[,2]), method = "restyle"),
    )
   ),
   list(
     x= 1.1, y = 1.1,
     yanchor= "top",
     buttons = list(
       list(args = list(list(x= list(df[,1]))),
            label = colname(df[,1]), method = "restyle"),
       list(args = list(list(x= list(df[,2]))),
            label = colname(df[,2]), method = "restyle"),
     )
    )
  )
)

annot <- list(list(text = "Vertical<br>Axis", x=-0.1, y= 1.1, xref='paper', 
                   yref='paper', showarrow=FALSE),
              list(text = "Horizontal<br>Axis", x= 0.57, y= 1.1, 
                   xref='paper', yref='paper', showarrow=FALSE))

p <- p %>%layout(
  annotations = annot)

此代码有效,但是出现了两个新问题:
1)如何更改数据并更改轴标签?
2)每次轴改变时,如何用df [,3]对绘图进行颜色编码?