在R中用默认值绘制水平条形图。

问题描述 投票:0回答:1

我有一个这样的DF。

df_test <- data.frame (ID  = c(88888, 99999),
                   Cluster1 = c(0, 1),Cluster2 = c(0, 2),Cluster3 = c(1, 3)
                   )

     ID Cluster1 Cluster2 Cluster3
1 88888        0        0        1
2 99999        1        2        3

现在我想要一个水平的柱状图,Y轴上有聚类。所有的条形图都应该从0-3(最小-最大),因为这是簇的范围。作为颜色,我希望有三个等级,0-1红色,1-2黄色和2-3绿色。DF的值应该以箭头或线的形式显示在总条上。这在ggplot2中可以实现吗?

r ggplot2 geom-bar
1个回答
0
投票

您可以使用 geom_col 下面的例子在这里。https:/ggplot2.tidyverse.orgreferencegeom_bar.html。

library(dplyr)
library(tidyr)
library(ggplot2)

首先,让数据整齐。

df <- df_test %>% pivot_longer(cols = 2:4,
                         names_to = "Cluster", 
                         values_to = "value")

每组数据中最大的一组用来做柱状图。

df <- df %>% group_by(Cluster) %>% 
  filter(value == max(value)) %>% 
  ungroup() %>% 
# identify color scheme:
  mutate(cols = case_when(value <=1 ~ "red",
                     value > 1 & value <= 2 ~ "yellow",
                     value > 2 ~ "green"))

ggplot(df) + geom_col(aes(x = value, y=Cluster, fill = Cluster)) + 
  scale_colour_manual(
    values = df$cols,
    aesthetics = c("colour", "fill")
  )

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.