繁体   English   中英

带有浮动条的堆积条形图

[英]Stacked bar chart with floating bars

我有一个数据框,我想用 ggplotly 将其显示在分组堆叠的条形图中。

library(ggplotly)
library(dplyr)
library(tidyr)


year = rep(c(2019,2019,2020,2020), 2)
month = rep(c("June","July"), 4)
gender = c("M","M","M","M","F","F","F","F")
male = c(11,13,15,17)
female = c(12,14,16,18)
count = c(11,13,15,17,12,14,16,18)

df <- data.frame(year, month, gender, count = as.numeric(count))

p <- df %>%
  mutate(count=as.numeric(count),
         month=factor(month, levels=c("June","July")),
         Month=paste(year,month,sep="-")) %>%
  ggplot(aes(month, count, fill=gender)) +
  geom_bar(stat="identity", position=position_stack()) +
  theme_minimal() + xlab("") + 
  facet_grid(~year, switch='x') + 
  theme(axis.text.x = element_text(margin = margin(t = -1, unit = "cm")))

ggplotly(p)

在此处输入图像描述

这工作正常,但是当我在图例中取消选择“M”时,“F”条保持浮动在其原始 position 中并且不会向下移动到 x 轴。 我究竟做错了什么?

在此处输入图像描述

尝试在您的数据中应用 dcast 并使用 plotly。

dt <- data.table(df) ## converts it to data.table
dt <- dcast.data.table(dt, year + month ~ gender, value.var = 'count') # dcast

fig <- plot_ly(dt, x = ~month, y = ~F, type = 'bar', name = 'F')
fig <- fig %>% add_trace(y = ~M, name = 'M')
fig <- fig %>% layout(yaxis = list(title = 'Count'), barmode = 'stack')

fig

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM