如何使用R中的轴添加子类别?

发布于 2025-01-30 03:22:19 字数 2456 浏览 2 评论 0原文

我正在尝试将第二类添加到x轴上,并在r下绘制:

”在此处输入图像描述

这是我的代码:

library(plotly)

data <- data.frame(day=  c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 1))

fig <- plot_ly(data= data, x = ~day) %>%
  
  add_trace(y = ~val,
            type = 'scatter',
            mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  
  add_trace(data= data %>% filter(flag == 1), y = 0, 
            type = 'scatter', 
            hoverinfo = "text",
            mode = 'markers',
            name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red',
              symbol = "x",
              size = 12
            ),
            showlegend = T
  )

fig

“

我尝试过,这似乎不错,但是标记者从该图,也许是由于数据过滤器。

library(plotly)

data <- data.frame(day=  c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 1))

fig <- plot_ly(data= data, x = ~list(visit,day)) %>%
  
  add_trace(y = ~val,
            type = 'scatter',
            mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  
  add_trace(data= data %>% filter(flag == 1), y = 0, 
            type = 'scatter', 
            hoverinfo = "text",
            mode = 'markers',
            name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red',
              symbol = "x",
              size = 12
            ),
            showlegend = T
  )

fig

I am trying to add a second category to x axis with Plotly under R like this:

enter image description here

Here is my code:

library(plotly)

data <- data.frame(day=  c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 1))

fig <- plot_ly(data= data, x = ~day) %>%
  
  add_trace(y = ~val,
            type = 'scatter',
            mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  
  add_trace(data= data %>% filter(flag == 1), y = 0, 
            type = 'scatter', 
            hoverinfo = "text",
            mode = 'markers',
            name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red',
              symbol = "x",
              size = 12
            ),
            showlegend = T
  )

fig

Without Category

I have tried this, which seems good but the markers disappear from the graph, maybe due to the filter on data.

library(plotly)

data <- data.frame(day=  c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 1))

fig <- plot_ly(data= data, x = ~list(visit,day)) %>%
  
  add_trace(y = ~val,
            type = 'scatter',
            mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  
  add_trace(data= data %>% filter(flag == 1), y = 0, 
            type = 'scatter', 
            hoverinfo = "text",
            mode = 'markers',
            name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red',
              symbol = "x",
              size = 12
            ),
            showlegend = T
  )

fig

Category without filter

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不喜欢何必死缠烂打 2025-02-06 03:22:19

您没有提供可再现的问题,所以我已经制作了数据。 (嗯,我无耻地从

library(plotly)

fig <- plot_ly() %>% 
  add_bars(x = list(rep(c("first", "second"), each = 2),
                    rep(LETTERS[1:2], 2)),
           y = c(2, 5, 2, 6),
           name = "Adults") %>% 
  add_bars(x = list(rep(c("first", "second"), each = 2),
                    rep(LETTERS[1:2], 2)),
           y = c(1, 4, 3, 6),
           name = "Children")
fig



更新

您添加了尝试将其应用于数据的数据和代码。我添加了一个更新,显然错过了问题所在。对此很抱歉。

现在我要注意(希望,对吗?),这是对实际问题的实际解决方案。

为了进行此更改,我修改了您的数据。我将其更改为零,而不是用一个注释的flag。然后,我将flag用作变量。

data <- data.frame(day = c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 0))

fig <- plot_ly(data= data, x = ~list(visit,day)) %>%
  add_trace(y = ~val,
            type = 'scatter', mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  add_trace(y = ~flag, 
            type = 'scatter', hoverinfo = "text",
            mode = 'markers', name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red', symbol = "x", size = 12),
            showlegend = T)
fig

您将收到有关离散的警告&amp;非差异数据并不是真正准确的数据,但仍显示出来。

You didn't provide a reproducible question, so I've made data. (Well, data I shamelessly stole from here). This creates a bar graph with two sets of x-axis labels. One for each set of bars. One for each group of bars. The content of the x-axis is the same in both traces.

library(plotly)

fig <- plot_ly() %>% 
  add_bars(x = list(rep(c("first", "second"), each = 2),
                    rep(LETTERS[1:2], 2)),
           y = c(2, 5, 2, 6),
           name = "Adults") %>% 
  add_bars(x = list(rep(c("first", "second"), each = 2),
                    rep(LETTERS[1:2], 2)),
           y = c(1, 4, 3, 6),
           name = "Children")
fig

enter image description here



Update

You added data and code trying to apply this to your data. I added an update and apparently missed what the problem was. Sorry about that.

Now that I'm paying attention (let's hope, right?), here is an actual fix to the actual problem.

For this change, I modified your data. Instead of the flag annotated with a one, I changed it to zero. Then I used flag as a variable.

data <- data.frame(day = c(1:4),
                   visit = c("visit1","visit1", "visit2", "visit2"),
                   val = c(1:4),
                   flag = c("","","", 0))

fig <- plot_ly(data= data, x = ~list(visit,day)) %>%
  add_trace(y = ~val,
            type = 'scatter', mode = 'lines+markers',
            line = list(width = 2, 
                        dash = 'solid')) %>%
  add_trace(y = ~flag, 
            type = 'scatter', hoverinfo = "text",
            mode = 'markers', name = "flag",
            text = paste("<br>N°",data$ID[data$flag == 1], 
                         "<br>Day",data$day[data$flag == 1]),
            marker = list(
              color = 'red', symbol = "x", size = 12),
            showlegend = T)
fig

You're going to get a warning about discrete & non-discrete data, which isn't really accurate, but it shows up, nonetheless.

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文