繁体   English   中英

使用同一列中的值创建 RMSE 和相关系数 Plot

[英]Creating a RMSE and Correlation Coefficent Plot with Values in the Same Column

我的dataframe如下

sos     eos     dataset     site                year
171     280     PhenoCam    Pheno_alligator     2016
130     275     PhenoCam    Pheno_alligator     2017
149     277     PhenoCam    Pheno_harvard2      2016
156     259     Landsat     Landsat_alligator   2016
157     247     Landsat     Landsat_alligator   2017
134     294     Landsat     Landsat_harvard2    2016
154     286     MODIS       MODIS_alligator     2016

并且数据继续有 1000 多个条目。 共有四个数据集 dataframe site_type ,时间为三年(2016、2017、2018)。 我想在 PhenoCam 与 Landsat 的 ggplot 中绘制散点图,使用它们的 sos 值,但无法弄清楚如何正确设置aes以获得 PhenoCam sos 作为 y 轴值和 Landsat sos 作为 x 轴值。 此散点图将用于显示 RMSE 和 R,因此,例如,Pheno_alligator 2016 年的 sos 需要 plot 与 Landsat_alligator 2016 年的对比。

我知道通常代码会是这样的

ggplot(site_type, aes(Landsat, PhenoCam)) +
geom_point()

但事实上他们在同一个栏目中发生了很多事情,这让我很失望。 我将总共制作 6 个散点图,(PhenoCam 与 sos 和 eos 的每个数据集对比)但只需要一个指导。 谢谢!

因此,您的值是根据变量“site”(在您的示例中是“alligator”或“harvard2”)名称的末尾和年份配对的。

您可以做的是重塑数据集以获得以下数据:

library(tidyr)
library(dplyr)

df %>% rowwise() %>% mutate(site = unlist(strsplit(site,"_"))[2]) %>%
  select(-eos) %>%
  pivot_wider(names_from = dataset, values_from = sos)

# A tibble: 3 x 5
  site       year PhenoCam Landsat MODIS
  <chr>     <int>    <int>   <int> <int>
1 alligator  2016      171     156   154
2 alligator  2017      130     157    NA
3 harvard2   2016      149     134    NA

有了这个,你可以通过以下方式轻松获得你的散点图 plot:

library(tidyr)
library(dplyr)
library(ggplot2)

df %>% rowwise() %>% mutate(site = unlist(strsplit(site,"_"))[2]) %>%
  select(-eos) %>%
  pivot_wider(names_from = dataset, values_from = sos) %>%
  ggplot(aes(x= Landsat, y = PhenoCam, color = site))+
  geom_point()

在此处输入图像描述

它能回答你的问题吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM