为什么堆叠条形图的 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")
我有一个数据框 (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")