Код:
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 = y1 и "y2.female" для представления "женских" данных, когда y = y2 соответственно. Как я могу сделать это без использования фильтра «преобразования» в r-plotly?
@M-- Ага! на самом деле это относится к моему вчерашнему сообщению - связь. Ссылка на код примера приведена там. Я пытался создать раскрывающееся меню путем фильтрации (используя преобразования), но не смог заставить его работать. Поэтому я изучаю альтернативные методы.
Мы можем переупорядочить данные, чтобы они были в длинном формате, а затем построить их:
df %>%
pivot_longer(cols = c(y1, y2)) %>%
unite(gender_var, c(gender, name)) %>%
plot_ly() %>%
add_bars (x = ~protein, y = ~value,
name = ~gender_var)
Не могли бы вы уточнить, что вы подразумеваете под [фильтровать по "преобразованиям"]?