1

我是一名本科生研究员,过去几个月我一直在自学 R。我刚开始尝试ggplot,遇到了一些麻烦。我制作了一系列箱线图,观察不同声学接收站的鱼的深度。我想添加一个散点图,显示接收站的深度。这是我到目前为止所拥有的:

data    <- read.csv(".....MPS.csv", header=TRUE)
df      <- data.frame(f1=factor(data$Tagging.location), #$
                      f2=factor(data$Station),data$Detection.depth)
df2     <- data.frame(f2=factor(data$Station), data$depth)
df$f1f2 <- interaction(df$f1, df$f2) #$
plot1   <- ggplot(aes(y = data$Detection.depth, x = f2, fill = f1), data = df) + #$
                  geom_boxplot() + stat_summary(fun.data = give.n, geom = "text", 
                  position = position_dodge(height = 0, width = 0.75), size = 3)
                  plot1+xlab("MPS Station") + ylab("Depth(m)") +
                  theme(legend.title=element_blank()) + scale_y_reverse() + 
                  coord_cartesian(ylim=c(150, -10))
plot2   <- ggplot(aes(y=data$depth, x=f2), data=df2) + geom_point()
                  plot2+scale_y_reverse() + coord_cartesian(ylim=c(150,-10)) + 
                  xlab("MPS Station") + ylab("Depth (m)")

不幸的是,由于我是这个论坛的新用户,我不能上传这两个地块的图像。我的 x 轴是“站”(有 12 个选项),我的 y 轴是“深度”(0-150 m)。箱线图通过标记站点(有 2 个选项)进行颜色编码。深度来自我的电子表格中的两个不同的列,它们不能合并为一个。

我的目标是通过将“plot2”(站深度散点图)添加到“plot1”箱线图(检测深度)来组合这两个图。它们都在查看相同的变量(深度和站点),并且必须是相同的 y 轴刻度。

如果我使用 R 基础程序,我想我可以找到一个混乱的解决方法,但如果可能的话,我想正确学习 ggplot。任何帮助是极大的赞赏!

4

1 回答 1

4

更新:我对原始帖子中使用的语言感到困惑,并写了一个比必要的稍微复杂的答案。这是清理后的版本。

第 1 步:设置。在这里,我们确保两个数据帧中的深度值具有相同的变量名称(为了便于阅读)。

df <- data.frame(f1=factor(data$Tagging.location), f2=factor(data$Station), depth=data$Detection.depth)

df2 <- data.frame(f2=factor(data$Station), depth=data$depth)

第 2 步:现在您可以使用 'ggplot' 函数绘制它,并使用 `col=f1` 参数拆分数据。我们将分别绘制检测数据,因为这需要一个箱线图,然后我们将用彩色点绘制站点的深度(假设每个站点只有一个深度)。我们通过引用“geom”函数中的数据来指定两个不同的图,而不是指定主“ggplot”函数中的数据。它应该看起来像这样:

ggplot()+geom_boxplot(data=df, aes(x=f2, y=depth, col=f1)) + geom_point(data=df2, aes(x=f2, y=depth), colour="blue") + scale_y_reverse()

在这个绘图示例中,我们使用箱线图来表示检测数据并通过站点标签为这些箱线图着色。但是,我们使用特定颜色的点单独绘制站点,因此我们将能够相对于箱线图清楚地看到它们。

您应该能够从这里调整情节以满足您的需要。

我创建了一些虚拟数据并加载到图表中,以向您展示它的外观。请记住,这纯粹是随机数据,没有任何意义。

深度图

于 2013-02-05T13:47:43.303 回答