在 R 中创建非标准图

Bam*_*eil 0 plot visualization r

我对 R 可视化不太有经验。也许有人可以提供一些关于使用 R 创建类似于下图的绘图的提示(使用哪些函数和包)。图像中是一个伪示例,使用实际数据在图中会更像这样的“条”。这里我们有一个名为“Ratio”的列,其值为 ABCD,另一列名为“Variants”,其值为 x、y、z、q 等。

在此输入图像描述

Rui*_*das 5

这是一个方法。如果数据类似于下面的假数据,请使用geom_bargeom_text显示其中包含计数的百分比条。然后只需如所发布的图片所示对情节进行修饰即可。

color_clrs <- c(
  A = "white",
  B = "black",
  C = "black",
  D = "white"
)
fill_clrs <- c(
  A = "#1f3560",
  B = "#bfbfbf",
  C = "#f2f3f3",
  D = "#ff0000"
)

library(ggplot2)

ggplot(df1, aes(Variants, fill = Ratio)) +
  geom_bar(position = "fill") +
  geom_text(stat = "count", aes(label = after_stat(count), color = Ratio), 
            position = position_fill(vjust = 0.5), show.legend = FALSE) +
  scale_x_discrete(limit = rev) +
  scale_y_continuous(trans = "reverse") +
  scale_fill_manual(values = fill_clrs) +
  scale_color_manual(values = color_clrs) +
  coord_flip() +
  theme_classic() +
  theme(legend.position = "top",
        axis.ticks.x = element_blank(),
        axis.text.x = element_blank())
Run Code Online (Sandbox Code Playgroud)

创建于 2023-06-13reprex v2.0.2


测试数据

set.seed(2023)
n <- 1000
df1 <- data.frame(
  Ratio = sample(LETTERS[1:4], n, TRUE),
  Variants = sample(letters[17:26], n, TRUE)
)
head(df1)
#>   Ratio Variants
#> 1     A        z
#> 2     D        s
#> 3     C        y
#> 4     A        s
#> 5     D        v
#> 6     C        r
Run Code Online (Sandbox Code Playgroud)

创建于 2023-06-13,使用reprex v2.0.2