将空条添加到(百分比)条形图(从长数据 fromat 生成)

cap*_*oma 2 r ggplot2

我想将特定项目作为条形图中的空条添加到 x 轴

例如:

# load packages
library(reshape2)
library(tidyverse)
library(scales)


#get data
data(tips, package = "reshape2")

tips

# make plot
myplot <- ggplot(tips, aes(day, group = sex)) + 
  geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") + 
  scale_y_continuous(labels=scales::percent) +
  ylab("relative frequencies") +
  facet_grid(~sex)

myplot
Run Code Online (Sandbox Code Playgroud)

现在我想添加缺少的工作日,作为空条:

missing_days <-c("Tue","Wed")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果可能,我想保留tips( 以便我仍然可以在aes命令中使用其他变量的“整洁”长数据格式。将“空”项添加到长数据格式的技巧是什么?

Rui*_*das 5

以下代码将首先获取所有工作日,然后在不删除未使用级别的情况下绘制图形。

tips$day <- as.character(tips$day)

days_levels <- weekdays(Sys.Date() + 1:7, abbreviate = TRUE)
fri <- grep("Fri", days_levels)
days_levels <- c(days_levels[fri:length(days_levels)], days_levels[1:(fri - 1)])
days_levels[days_levels == "Thu"] <- "Thur"
tips$day <- factor(tips$day, levels = days_levels)

# make plot
myplot <- ggplot(tips, aes(day, group = sex)) + 
  geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") + 
  scale_y_continuous(labels=scales::percent) +
  scale_x_discrete(drop = FALSE) +
  ylab("relative frequencies") +
  facet_grid(~sex)

myplot
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明