簡體   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