簡體   English   中英

在 r plotly 中不使用“變換”的多組分組條形圖(在同一圖上)

[英]Multiple sets of grouped bar charts (on the same plot) without using "transforms" in r plotly

代碼:

library(plotly)
library(tidyverse)

df <- data.frame(protein = c("Chicken", "Beef", "Pork", "Fish",
                             "Chicken", "Beef", "Pork", "Fish"),
                 y1 = c(3, 24, 36, 49, 7, 15, 34, 49),
                 y2 = c(9, 28, 40, 47, 8, 20, 30, 40 ), 
                 gender = c("Male", "Male", "Male", "Male",
                            "Female", "Female", "Female", "Female"))

df %>%
  plot_ly() %>% 
  add_bars (y = ~y1, x = ~protein,
            name = 'y1.male') %>% add_bars(y = ~y2,
               x=~protein, color = I("green"),name = "y2.male")%>%
  add_bars(y = ~y1, x = ~protein, color = I("black"),
           name = 'y1.female') %>% add_bars(y = ~y2,
                x=~protein, color = I("red"), name = "y2.female")

我想要的結果是創建類似這樣的東西:

在此處輸入圖像描述

但是,當您運行代碼時,您會看到它在每個欄中堆疊了“男性”和“女性”值。 我希望“y1.male”在 y = y1 時代表“男性”數據,“y2.male”在 y = y2 時代表“男性”數據,“y1.female”在 y = y2 時代表“女性”數據y = y1 和“y2.female”分別表示 y = y2 時的“女性”數據。 我怎樣才能 go 做到這一點而不必在 r-plotly 中通過“轉換”使用過濾器?

我們可以將數據重新排列為長格式,然后是 plot:

df %>% 
  pivot_longer(cols = c(y1, y2)) %>% 
  unite(gender_var, c(gender, name)) %>% 
 plot_ly() %>% 
  add_bars (x = ~protein, y = ~value,
            name = ~gender_var)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM