我的数据有两个数字列(正值和负值)和两个分类变量.现在我想在同一行上绘制正负条,而不是通过这段代码在负片下绘制正条,保持所有其他设置不变?

df <- data.frame(model  = c("A","B","C","D","B","C"),
                  category = c("origin", "origin","origin","abroad","abroad","abroad"),
                 pos = c(40,50,45,100,105,80),
                 neg = c(-10,-5,-4,-16,-7,-2),
                 Colour = c("chocolate","deeppink4","yellow","steelblue3","deeppink4","yellow"))

Colour <- as.character(df$Colour)
Colour <- c(Colour,"white")
names(Colour) <- c(as.character(df$model),"white")



df <- df %>% pivot_longer(., cols=c('pos','neg'),
                           names_to = 'sign') %>% 
  mutate(Groups = paste(category, model),
         sign = factor(sign, levels = c("neg", "pos")))



bar2 <- ggplot(df, aes(value, tidytext::reorder_within(model, value, category),
                fill = ifelse(sign == "neg", "white", model), 
                color = model))+
  geom_col(position = "dodge") +
  scale_fill_manual(values = Colour, breaks = df$model) +
  scale_color_manual(values = Colour, breaks = df$model) +
  tidytext::scale_y_reordered() +
  labs(fill = "model") +
  facet_grid(category ~ ., switch = "y",scales = "free_y") +
  theme(axis.text.x = element_text(angle = 90),
        strip.background = element_rect(fill = "white"),
        strip.placement = "outside",
        strip.text.y.left = element_text(angle = 0),
        panel.spacing = unit(0, "lines"))+theme(legend.position="none") + 
        labs( title = "BarPlot",
              subtitle = "changes",
              y = " ") 

bar2

barPlot Image

推荐答案

将中的"道奇"改为"堆叠"

geom_col(position = "stack")

Output

R相关问答推荐

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

在特定Quarto(reveal.js)幻灯片上隐藏徽标

使用整齐的计算(curl -curl )和杂音

将一个字符串向量调整为与其他字符串向量完全相同的大小

函数可以跨多个列搜索多个字符串并创建二进制输出变量

基于Key->Value数据帧的基因子集相关性提取

有没有办法一次粘贴所有列

在R中,如何从一系列具有索引名的变量快速创建数据帧?

排序R矩阵的行和列

如何创建直方图与对齐的每月箱?

对计算变量所有唯一值的变量进行变异

从字符串列中的向量中查找第一个匹配的单词

打印的.txt文件,将值显示为&Quot;Num&Quot;而不是值

在shiny /bslb中,当卡片是从json生成时,如何水平排列卡片?

用逗号拆分字符串,并删除一些字符

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出

删除列表中的奇数长度元素

使用';IF';运算符判断数据框单元格中的给定值是否属于一组值

Gg森林未显示其中一个变量的引用组