带有抖动条的箱线图 (ggplot2) 的错误消息
Errormessages for Boxplots with jitter strips (ggplot2)
我正在尝试使用来自网站 (https://z3tt.github.io/beyond-bar-and-box-plots/) 的代码制作带有抖动条的箱线图。该网站上的代码如下面的屏幕截图所示。
我不确定“g”代表什么以及它们是否指的是它们的数据框。到目前为止我的代码是这样的:
df %>%
geom_boxplot(aes(data = df, x = groupci, y = df$weight_v1_3, color = groupci, fill = groupci)) +
scale_y_continuous(breaks = 1:9) +
scale_color_manual(values = weight_v1_3, guide = "none") +
scale_fill_manual(values = weight_v1_3, guide = "none")
df +
geom_boxplot(alpha = .5, size = 1.5, outlier.size = 5)
df +
geom_boxplot
(aes(fill = groupci, fill = after_scale(colorspace::lighten(fill, .7))),
size = 1.5, outlier.shape = NA) +
geom_jitter(width = .1, size = 7, alpha = .5)
错误消息说:映射必须由 aes()
和 is_reference(x, quote(expr = )) 中的错误创建:找不到对象 'weight_v1_3'。
我要描绘的数据中的变量称为“weight_v1_3”。我还想并排显示控制组和干预组的箱线图,类似于下面网站上的示例。最后,我什至想并排显示控制组和干预组,然后标记为 3 次访问,因此 3 对控制和干预在一张图表中用于一个变量,这里是权重。我认为这还没有包含在代码中。如果有人知道如何另外执行此操作,那就太棒了。
我只是使用网站上的相同缩放比例来查看它的外观,然后可能会对其进行更改。不幸的是我的代码还不能工作。有人有什么想法吗?提前致谢!
示例数据:
structure(list(pseudonym = c(1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L,
9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L, 9L, 10L, 11L, 1L,
2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), control.0.1. = c(0L, 0L, 0L,
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), intervention.0.1. = c(1L,
1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), visit = c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), weight.V1.3 = c(60L,
60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 59L, 59L, 59L,
59L, 59L, 59L, 59L, 59L, 59L, 59L, 59L, 57L, 57L, 57L, 57L, 57L,
57L, 57L, 57L, 57L)), class = "data.frame", row.names = c(NA,
-31L))
您的代码有很多问题和语法错误。仅举几例:
ggplot 总是以 ggplot()
开头。 df %>% geom_boxplot(..)
将不起作用。
没有data
审美。要告诉 ggplot2 使用哪个数据集,您必须将其传递给 data
参数,例如做 ggplot(data = df)
或做空 ggplot(df)
.
做scale_color_manual(values = weight_v1_3)
也不行。您不必传递要为绘图着色的列名称(这是在 aes()
内完成的)。在 scale_color_manual
中指定要使用的颜色。
最后,您引用的代码中的 g
是一个 ggplot 对象,即您可以将 ggplot 对象分配给一个变量。然后向这个对象添加额外的图层。
在继续之前,我建议先学习 ggplot2 教程以获得基础知识,例如您引用的 post 的作者有一个很好的教程:https://www.cedricscherer.com/2019/08/05/a-ggplot2-tutorial-for-beautiful-plotting-in-r/
注意:我还做了一些小的数据整理步骤,例如重命名列和添加 groupci
列。
library(ggplot2)
library(dplyr)
df <- df %>%
rename_with(~ gsub("\.", "_", tolower(.x))) %>%
mutate(groupci = ifelse(control_0_1_ == 1, "control", "intervention"))
pal <- c("red", "blue")
g <- ggplot(df, aes(x = groupci, y = weight_v1_3)) +
geom_boxplot(aes(fill = groupci, fill = after_scale(colorspace::lighten(fill, .7))), alpha = .5, size = 1.5, outlier.size = 5)
g +
geom_jitter(aes(color = groupci), width = .1, size = 7, alpha = .5) +
scale_y_continuous(breaks = 1:9) +
scale_color_manual(values = pal, guide = "none") +
scale_fill_manual(values = pal, guide = "none")
我正在尝试使用来自网站 (https://z3tt.github.io/beyond-bar-and-box-plots/) 的代码制作带有抖动条的箱线图。该网站上的代码如下面的屏幕截图所示。
我不确定“g”代表什么以及它们是否指的是它们的数据框。到目前为止我的代码是这样的:
df %>%
geom_boxplot(aes(data = df, x = groupci, y = df$weight_v1_3, color = groupci, fill = groupci)) +
scale_y_continuous(breaks = 1:9) +
scale_color_manual(values = weight_v1_3, guide = "none") +
scale_fill_manual(values = weight_v1_3, guide = "none")
df +
geom_boxplot(alpha = .5, size = 1.5, outlier.size = 5)
df +
geom_boxplot
(aes(fill = groupci, fill = after_scale(colorspace::lighten(fill, .7))),
size = 1.5, outlier.shape = NA) +
geom_jitter(width = .1, size = 7, alpha = .5)
错误消息说:映射必须由 aes()
和 is_reference(x, quote(expr = )) 中的错误创建:找不到对象 'weight_v1_3'。
我要描绘的数据中的变量称为“weight_v1_3”。我还想并排显示控制组和干预组的箱线图,类似于下面网站上的示例。最后,我什至想并排显示控制组和干预组,然后标记为 3 次访问,因此 3 对控制和干预在一张图表中用于一个变量,这里是权重。我认为这还没有包含在代码中。如果有人知道如何另外执行此操作,那就太棒了。
我只是使用网站上的相同缩放比例来查看它的外观,然后可能会对其进行更改。不幸的是我的代码还不能工作。有人有什么想法吗?提前致谢!
示例数据:
structure(list(pseudonym = c(1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L,
9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 3L, 8L, 9L, 10L, 11L, 1L,
2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), control.0.1. = c(0L, 0L, 0L,
0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), intervention.0.1. = c(1L,
1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), visit = c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), weight.V1.3 = c(60L,
60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 60L, 59L, 59L, 59L,
59L, 59L, 59L, 59L, 59L, 59L, 59L, 59L, 57L, 57L, 57L, 57L, 57L,
57L, 57L, 57L, 57L)), class = "data.frame", row.names = c(NA,
-31L))
您的代码有很多问题和语法错误。仅举几例:
ggplot 总是以
ggplot()
开头。df %>% geom_boxplot(..)
将不起作用。没有
data
审美。要告诉 ggplot2 使用哪个数据集,您必须将其传递给data
参数,例如做ggplot(data = df)
或做空ggplot(df)
.做
scale_color_manual(values = weight_v1_3)
也不行。您不必传递要为绘图着色的列名称(这是在aes()
内完成的)。在scale_color_manual
中指定要使用的颜色。最后,您引用的代码中的
g
是一个 ggplot 对象,即您可以将 ggplot 对象分配给一个变量。然后向这个对象添加额外的图层。在继续之前,我建议先学习 ggplot2 教程以获得基础知识,例如您引用的 post 的作者有一个很好的教程:https://www.cedricscherer.com/2019/08/05/a-ggplot2-tutorial-for-beautiful-plotting-in-r/
注意:我还做了一些小的数据整理步骤,例如重命名列和添加 groupci
列。
library(ggplot2)
library(dplyr)
df <- df %>%
rename_with(~ gsub("\.", "_", tolower(.x))) %>%
mutate(groupci = ifelse(control_0_1_ == 1, "control", "intervention"))
pal <- c("red", "blue")
g <- ggplot(df, aes(x = groupci, y = weight_v1_3)) +
geom_boxplot(aes(fill = groupci, fill = after_scale(colorspace::lighten(fill, .7))), alpha = .5, size = 1.5, outlier.size = 5)
g +
geom_jitter(aes(color = groupci), width = .1, size = 7, alpha = .5) +
scale_y_continuous(breaks = 1:9) +
scale_color_manual(values = pal, guide = "none") +
scale_fill_manual(values = pal, guide = "none")