多列条形图
Strip plot with many columns
如何使用 ggplot 复制如下图?
它基本上是一组并排装订的带状图。我是在出版物中看到它的图片,所以我没有制作它的代码。
我的数据源(未绘制)类似于向量列表,类似于下面的向量,每个向量的长度都可以不同。
my_data = list(a=c(1,18,90), b=c(1,5,7,8,80), c=c(1,6), d=c(1,22,35,300))
(也就是说,使用不同的数据结构也可以 - 例如带有一些 NA 条目的数据框)
感谢您的帮助!
这看起来很接近:
library(tidyverse)
set.seed(123)
IDs <- letters[1:16]
values <- sample(c(rep(NA, 100000), seq(1e-10, 0, 1e-10)), size = 1600, replace = TRUE)
test_data <- list(IDs = IDs, values = values)
df <- as.data.frame(test_data)
ggplot(df, aes(x = IDs, y = values)) +
geom_point(shape = 95, size = 10) +
geom_vline(xintercept = seq(0.5, 16.5, 1), colour = "grey75") +
theme_classic(base_size = 20) +
scale_x_discrete(expand = c(0.035, 0.035)) +
scale_y_log10(expand = c(0.001, 0.001),
breaks = c(0.0001, 0.001, 0.01, 0.1, 0),
labels = expression(10^-4, 10^-3, 10^-2, 10^-1, 10^0)) +
theme(axis.title = element_blank(),
axis.ticks.x = element_blank(),
panel.border = element_rect(colour = "black", fill = NA, size = 2))
编辑
对于您的示例中的数据,这是一个更合适的替代方案:
library(tidyverse)
my_data = list(a=c(1,18,90), b=c(1,5,7,8,80), c=c(1,6), d=c(1,22,35,300))
df <- stack(my_data)
ggplot(df, aes(x = ind, y = values)) +
geom_errorbarh(aes(xmin = as.numeric(ind) + 0.45,
xmax = as.numeric(ind) - 0.45),
height = 0) +
geom_vline(xintercept = seq(0.5, 16.5, 1), colour = "grey75") +
theme_classic(base_size = 20) +
scale_x_discrete(expand = c(0.125, 0.125)) + # alter these numbers to suit
theme(axis.title = element_blank(),
axis.ticks.x = element_blank(),
panel.border = element_rect(colour = "black", fill = NA, size = 2))
由 reprex package (v2.0.1)
于 2021-08-31 创建
如何使用 ggplot 复制如下图?
它基本上是一组并排装订的带状图。我是在出版物中看到它的图片,所以我没有制作它的代码。
我的数据源(未绘制)类似于向量列表,类似于下面的向量,每个向量的长度都可以不同。
my_data = list(a=c(1,18,90), b=c(1,5,7,8,80), c=c(1,6), d=c(1,22,35,300))
(也就是说,使用不同的数据结构也可以 - 例如带有一些 NA 条目的数据框)
感谢您的帮助!
这看起来很接近:
library(tidyverse)
set.seed(123)
IDs <- letters[1:16]
values <- sample(c(rep(NA, 100000), seq(1e-10, 0, 1e-10)), size = 1600, replace = TRUE)
test_data <- list(IDs = IDs, values = values)
df <- as.data.frame(test_data)
ggplot(df, aes(x = IDs, y = values)) +
geom_point(shape = 95, size = 10) +
geom_vline(xintercept = seq(0.5, 16.5, 1), colour = "grey75") +
theme_classic(base_size = 20) +
scale_x_discrete(expand = c(0.035, 0.035)) +
scale_y_log10(expand = c(0.001, 0.001),
breaks = c(0.0001, 0.001, 0.01, 0.1, 0),
labels = expression(10^-4, 10^-3, 10^-2, 10^-1, 10^0)) +
theme(axis.title = element_blank(),
axis.ticks.x = element_blank(),
panel.border = element_rect(colour = "black", fill = NA, size = 2))
编辑
对于您的示例中的数据,这是一个更合适的替代方案:
library(tidyverse)
my_data = list(a=c(1,18,90), b=c(1,5,7,8,80), c=c(1,6), d=c(1,22,35,300))
df <- stack(my_data)
ggplot(df, aes(x = ind, y = values)) +
geom_errorbarh(aes(xmin = as.numeric(ind) + 0.45,
xmax = as.numeric(ind) - 0.45),
height = 0) +
geom_vline(xintercept = seq(0.5, 16.5, 1), colour = "grey75") +
theme_classic(base_size = 20) +
scale_x_discrete(expand = c(0.125, 0.125)) + # alter these numbers to suit
theme(axis.title = element_blank(),
axis.ticks.x = element_blank(),
panel.border = element_rect(colour = "black", fill = NA, size = 2))
由 reprex package (v2.0.1)
于 2021-08-31 创建