我在 R 中使用了一个条形图
ggplot2::geom_bar(data = data,
mapping = ggplot2::aes(
x = values_for_x,
y = values_for_y,
color = factor_levels_for_color,
fill = factor_levels_for_color,
alpha = factor_levels_for_alpha
),
position = ggplot2::position_dodge2(
preserve = "total"
),
stat = "identity",
linewidth = 0
)
如您所见,我有 3 个不同的列定义了
color
、fill
和 alpha
。
目前,我的躲避条首先按 alpha
和 color
排序/分组。不过,我希望先按 color
订购,然后再按 alpha
订购。
我目前正在寻找正确的位置来定义这一点。 任何帮助/提示表示赞赏!
谢谢!
以下代码绘制了 ggplot。它首先按
alpha
值的级别对所有躲避的条形进行排序,然后使用 color_values
因子级别。
我想改变这个,但到目前为止还没有做到这一点。
虽然这是一个最小的示例,但我的代码手动定义了级别,并将特定的颜色或 alpha 值分配给我不想更改的某些值。
再次感谢!
data <- base::data.frame(
x_values = rep(x = c("Treatment 1", "Treatment 2", "Treatment 3"), times = 3),
y_values = c(5,8,7,3,7,8,3,1,5),
alpha_values = c(1,2,3,1,2,3,1,2,3),
group = "A",
color_values = c("location1", "location1", "location1",
"location2", "location2", "location2",
"location3", "location3", "location3")
)
data2 <- base::data.frame(
x_values = rep(x = c("Treatment 1", "Treatment 2", "Treatment 3"), times = 3),
y_values = c(17,18,17,13,17,18,13,11,15),
alpha_values = c(7,7,7,3,3,3,5,5,5),
group = "B",
color_values = c("location3", "location3", "location3",
"location1", "location1", "location1",
"location2", "location2", "location2")
)
data <- dplyr::bind_rows(base::list(data, data2))
data$alpha_values <- base::as.factor(data$alpha_values)
data$group <- base::as.factor(data$group)
data$color_values <- base::as.factor(data$color_values)
ggplot2::ggplot(data = data,
mapping = ggplot2::aes(x = x_values,
y = y_values,
alpha = alpha_values,
fill = color_values)) +
ggplot2::geom_bar(stat = "identity", position = ggplot2::position_dodge2())
一种方法可能是创建一个组合颜色和 alpha 值的因子,并按照您想要的方式对其进行排序:
ggplot2::ggplot(data = data |>
dplyr::arrange(color_values, alpha_values) |>
dplyr::mutate(order = forcats::fct_inorder(paste(color_values, alpha_values))),
mapping = ggplot2::aes(x = x_values,
y = y_values,
alpha = alpha_values,
fill = color_values,
group = order)) +
ggplot2::geom_bar(stat = "identity", position = ggplot2::position_dodge2())