首页 > 解决方案 > y 轴值位置不正确的 geom_bar 问题

问题描述

我有两个数据集,每个数据集都有 10000 个染色体区域。然后我计算我的染色体区域与特定染色体元素 (LINE) 重叠的次数。我这样做了 4 次,如果我的染色体区域与 30%、50%、80% 和 100% 的 LINE 元素重叠,我会计算重叠。

然后我希望制作一个条形罐,显示计算与 LINE 的实际重叠所需的重叠百分比越少,你得到的重叠就越多。

这是我所做的一个简单的例子。我已经用我需要做 facet_wrapt 和填充等的值定义了我的向量。

overlap <- c(0.3,0.5,0.8,1.0,
             0.3,0.5,0.8,1.0,
             0.3,0.5,0.8,1.0,
             0.3,0.5,0.8,1.0,
             0.3,0.5,0.8,1.0,
             0.3,0.5,0.8,1.0)

region <- c("chr_reg","chr_reg","chr_reg","chr_reg",
          "chr_reg","chr_reg","chr_reg","chr_reg",
          "chr_reg","chr_reg","chr_reg","chr_reg",
          "random","random","random","random",
          "random","random","random","random",
          "random","random","random","random")

Element <- c("LINE1","LINE1","LINE1","LINE1",
         "LINE2","LINE2","LINE2","LINE2",
         "LINE3","LINE3","LINE3","LINE3",
         "LINE1","LINE1","LINE1","LINE1",
         "LINE2","LINE2","LINE2","LINE2",
         "LINE3","LINE3","LINE3","LINE3")

No <- c(1100,1000,1000,900,
        3000,3000,2900,2900,
        1900,1500,1700,1500,
        2500,2500,2500,2600,
        5200,5000,5200,5000,
        3500,3000,3500,3600)


df_full2 <- as.data.frame(cbind(overlap,Element,region,No))

ggplot(df_full2,aes(x = region, y = No,fill = overlap)) + 
  geom_bar(stat = "identity", position = "dodge",colour="black")+
  theme_bw() + facet_wrap(~Element)

我得到以下情节

在此处输入图像描述

我的问题是我希望 LINE 1 的紫色条因此 100% 重叠是最低的条,因为它的 y 轴值最小为 955,所以我不确定为什么它显示为高于该 LINE1 组的其他条? 我还希望紫色条像其他两个组一样位于左侧,因此根据值进行排序。它似乎适用于 LINE2 和 LINE3 组,其中最小值位于左侧,并且每个 LINE 将它们很好地分隔为“chr_reg”和“random”。这就是为什么我无法理解为什么“LINE1”“chr_reg”存在问题的原因。

所以理想情况下是这样的: 在此处输入图像描述

标签: rggplot2bar-chart

解决方案


No是字符只是添加as.integer

ggplot(df_full3,aes(x = region, y = as.integer(No),fill = overlap)) + 
  geom_bar(stat = "identity", position = "dodge",colour="black")+
  theme_bw() + facet_wrap(~Element)

在此处输入图像描述


推荐阅读