R 结合两个ggplot散点图,以横断面为起点
我在一个州立公园做林业技术员,我的老板很想找到新的方法来绘制我们的林地地图。我们在一个0.6英亩的广场上收集了树木的数据(所有地块边界为49.2米)。我们从两个水平样带收集树木位置数据,一个在10.1米处,另一个在39.1米处,都从南向北 我们以这种方式收集数据是因为很难从一个样带中看到地块中的所有树木。所以,我有样带1中一些树木位置的x,y数据,一些来自样带2,还有一些来自两个样带,以比较准确性 X是沿横断面的距离,Y是到树的距离,所有角度均为直角。如果树位于样带的西部,则Y值为负值,如果树位于东部,则Y值为正值。你明白为什么我不能把数据合并成一个数据集了吗 我能够以我想要的方式绘制两个图(见下面的脚本),但我需要将它们绘制在同一个图上,以便比较从样带1和样带2测量的树木。我不知道怎么做,因为样带需要有两个不同的起源 如何将两个R 结合两个ggplot散点图,以横断面为起点,r,ggplot2,R,Ggplot2,我在一个州立公园做林业技术员,我的老板很想找到新的方法来绘制我们的林地地图。我们在一个0.6英亩的广场上收集了树木的数据(所有地块边界为49.2米)。我们从两个水平样带收集树木位置数据,一个在10.1米处,另一个在39.1米处,都从南向北 我们以这种方式收集数据是因为很难从一个样带中看到地块中的所有树木。所以,我有样带1中一些树木位置的x,y数据,一些来自样带2,还有一些来自两个样带,以比较准确性 X是沿横断面的距离,Y是到树的距离,所有角度均为直角。如果树位于样带的西部,则Y值为负值,如果树位
ggplot
散点图与显示的横断面重叠?非常感谢您的帮助
我已经阅读了所有相关的帖子,没有发现任何有效的。有一篇使用geom_步骤的有趣帖子,但我无法用我当前的代码理解它。我需要保持aes()线的原样(我认为),以便点显示为树胸径的表示形式
p1<-ggplot(trans1, aes(x=Transect.1.Distance.from,
y=Transect.1.Distance.Along)) +
geom_point(colour="red",aes(size=DBHcm))
p2<-p1 + geom_hline(yintercept = 0)
p2
p3<-ggplot(trans2, aes(x=Transect.2.Distance.from,
y=Transect.2.Distance.along)) +
geom_point(colour="black",aes(size=DBHcm))
p4<-p3+geom_hline(yintercept = 0)
p4
这是我运行你建议的代码时得到的情节,
试着这样开始。如果确实有效,请提供一些测试数据
p <- ggplot() +
geom_point(data = trans1, aes(x=Transect.1.Distance.from,
y=Transect.1.Distance.Along, size=DBHcm), colour="red") +
geom_hline(yintercept = 0) +
geom_point(data = trans2, aes(x=Transect.2.Distance.from,
y=Transect.2.Distance.along, size=DBHcm), color = "black")
p
p试试这个开始。如果确实有效,请提供一些测试数据
p <- ggplot() +
geom_point(data = trans1, aes(x=Transect.1.Distance.from,
y=Transect.1.Distance.Along, size=DBHcm), colour="red") +
geom_hline(yintercept = 0) +
geom_point(data = trans2, aes(x=Transect.2.Distance.from,
y=Transect.2.Distance.along, size=DBHcm), color = "black")
p
p它工作得很好!但是我担心它可能不准确,因为有两个横断面。在代码中,它在哪里告诉R使用横断面作为起点?我在原来的问题中添加了一些示例数据。使用“物种”列添加标签以检查树木是否位于正确的位置也很好(例如,我知道我们从两个样带绘制了一棵檀香树,并且它是地块中唯一的檀香树)。感谢诸神,我只是一个苦苦挣扎的新用户。添加标签有点棘手。您可以尝试查看类似于label=Species
,geom_text()
,geom_label
,或ggrepel::geom_text_repel(aes(label=Species))
。如果你发布一个关于它的具体问题,你可能会吸引一个很好的解决方案。它工作得很好!但是我担心它可能不准确,因为有两个横断面。在代码中,它在哪里告诉R使用横断面作为起点?我在原来的问题中添加了一些示例数据。使用“物种”列添加标签以检查树木是否位于正确的位置也很好(例如,我知道我们从两个样带绘制了一棵檀香树,并且它是地块中唯一的檀香树)。感谢诸神,我只是一个苦苦挣扎的新用户。添加标签有点棘手。您可以尝试查看类似于label=Species
,geom_text()
,geom_label
,或ggrepel::geom_text_repel(aes(label=Species))
。如果你发布一个具体的问题,你可能会吸引一个很好的解决方案。
library(tidyverse)
trans1 <- tribble(
~TreeID, ~Species, ~DBHcm, ~Cut, ~Transect1.Distance.from, ~Transect1.Distance.Along,
336, "PSMEM", 34.60, "No", 9.4, -6.3,
408, "SESE3", 50.70, "Yes", 3.5, -2.7,
337, "PSMEM", 36.30, "Yes", 9.6, -3.2,
409, "SESE3", 48.10, "Yes", 5.4, 3.6,
338, "PSMEM", 19.00, "Yes", 13.7, -4.8,
410, "PSMEM", 30.90, "No", 10, 1.7,
339, "PSMEM", 28.50, "Yes", 13.6, -7.8
)
trans2 <- tribble(
~TreeID, ~Species, ~DBHcm, ~Cut, ~Transect2.Distance.from, ~Transect2.Distance.Along,
446, "PSMEM", 24.50, "Yes", 44.3, -10.1,
379, "SESE3", 23.10, "No", 50, -11,
447, "PSMEM", 32.30, "No", 40.2, -8.8,
380, "PSMEM", 22.10, "No", 51.5, -10.4,
381, "PSMEM", 29.20, "No", 48.8, -7.3,
448, "PSMEM", 42.80, "No", 39.3, -4.8,
382, "PSMEM", 18.70, "No", 46.6, -6.4,
449, "PSMEM", 24.00, "No", 43, -5.8,
383, "SESE3", 12.60, "No", 48.1, -7.3,
385, "SESE3", 28.00, "No", 51.8, -7.3
)
p <- ggplot() +
geom_point(data = trans1, aes(x=Transect1.Distance.from,
y=Transect1.Distance.Along, size=DBHcm), colour="red") +
geom_hline(yintercept = 0) +
geom_point(data = trans2, aes(x=Transect2.Distance.from,
y=Transect2.Distance.Along, size=DBHcm), color = "black")
p