为什么堆叠条形图的 y 轴与数据框中的值不匹配?

Why does the y-axis of my stacked bar chart not match the values in my data frame?

我有一个数据框 (190 x 27),其中每个样本都有一定比例的不同细胞类型。下面是这个数据框的快照。

# A tibble: 3 × 5
  projid   age_cat Monocytes_EPIC Neutrophils_EPIC Vascular_endothelial_cells
  <chr>    <fct>            <dbl>            <dbl>                      <dbl>
1 02525608 95-99            0.062            0.832                      0.066
2 03052480 85-89            0.075            0.762                      0.051
3 03283241 75-79            0.021            0.876                      0.031

我需要创建一个堆积条形图,其中 x 轴是年龄类别,条形图 colored/filled 按细胞类型,y 轴反映每个年龄段内每种细胞类型的比例-类别。

我尝试了下面的代码并生成了以下数据框和堆积条形图:

df_long <- df %>% gather( CellType, Proportion, 3:27 )
df_long
# A tibble: 4,750 × 4
   projid   age_cat CellType       Proportion
   <chr>    <fct>   <chr>               <dbl>
 1 02525608 95-99   Monocytes_EPIC      0.062
 2 03052480 85-89   Monocytes_EPIC      0.075
 3 03283241 75-79   Monocytes_EPIC      0.021
 4 03430444 75-79   Monocytes_EPIC      0.032
 5 03806878 85-89   Monocytes_EPIC      0.127
 6 03889845 85-89   Monocytes_EPIC      0.025
 7 04576591 90-94   Monocytes_EPIC      0.129
 8 05498462 85-89   Monocytes_EPIC      0.021
 9 05522533 75-79   Monocytes_EPIC      0    
10 06073025 80-84   Monocytes_EPIC      0.07 
# … with 4,740 more rows
ggplot( pd2_long, aes( x = age_cat, y = Proportion, fill = CellType ) ) +
  geom_col( position = position_stack( ) ) +
  scale_fill_manual( values = mycolors, name = "Cell Type" ) +
  scale_y_continuous( expand = c( 0.01,1 ) ) +
  theme( axis.text.x = element_text( angle = -90 ) ) +
  xlab( "Age Category" ) + 
  ylab( "Proportion" ) +
  labs( title = "Proportion of Cell Types" ) +
  theme( axis.text.x = element_text( angle = 0 ) )

如您所见,Y 轴似乎反映了每个类别中的样本数量,而不是每种细胞类型的比例。有人可以解释为什么会这样吗?我如何获得类似的图表,其中 Y 轴反映了每个年龄组中每种细胞类型的比例?

它是对每个年龄段内细胞类型的比例值求和。如果您随后想将该汇总数据表示为每个年龄段内细胞类型的比例(每个年龄组总和为 1.00),您可以更改 geom_col ->

geom_col(position = "fill")