我對 R 相當陌生,我正在研究具有多個 y 值和方面的雷達圖。我想根據我的點的位置從我的資料框中創建三個單獨的雷達圖,而不是一個。當我根據我想要的點過濾我的 df 時,它沒有顯示正確的值。
p.tot <- ggRadar(df.Plot.PI.total, mapping = aes(colour = scenario, facet = PlotNames),
size=3, alpha = 0, ylim = c(1,1))
theme_bw()
scale_color_manual(name="Scenario", values = cbPalette.PI)
scale_fill_manual(values = cbPalette.PI, name="Scenario")
labs(title = "Changes in Protection Indexes")
theme(plot.title = element_text(size = 20,face = "bold"),
strip.text.x = element_text(size = 14),
legend.title = element_text(face="bold",size = 18), legend.text = element_text(size = 16),
legend.position = "bottom",
text = element_text(size=18),
axis.text = element_text(size=14),axis.title = element_text(size=14))

繪制整個 df 效果很好。對于我的作業,我想繪制三個不同的圖,每組點一個。所以我對 df 應用了一個過濾器,只繪制興趣點。
df.Plot.PI.SUB <- df.Plot.PI.total %>% filter(str_detect(PlotNames, "SUB_"))
然而,當我繪制縮短的資料時,雷達圖中的某些點無法正確顯示,即使資料仍然相同!

有人可以告訴如何解決這個問題嗎?非常感謝!
uj5u.com熱心網友回復:
問題是ggRadar默認情況下會重新調整資料集中的所有連續變數(請參閱 參考資料?ggRadar):
rescale一個邏輯值。如果為 TRUE,則重新調整 data.frame 中的所有連續變數。
由于重新縮放取決于提供的資料,因此在對資料進行子集化時會得到不同的結果。要手動修復該重新調整資料并設定rescale=FALSE.
由于您沒有提供示例資料,我創建了一個基于 mtcars 的最小表示。
首先,我使用默認重新縮放來重現您的問題。在這里,我們在洗掉cyl=8值時得到不同的圖。
library(ggiraphExtra)
library(dplyr)
library(scales)
library(tibble)
library(ggplot2)
library(patchwork)
mtcars_radar <- mtcars %>%
as_tibble(rownames = "group") %>%
mutate(cyl = factor(cyl),
across(!c(group, cyl), rescale)) %>%
tail(4) %>%
select(1:10)
p1 <- ggRadar(mtcars_radar, mapping = aes(facet = cyl))
p2 <- ggRadar(filter(mtcars_radar, cyl != 8), mapping = aes(facet = cyl))
p1 / p2

但是在設定時,我們會得到與和rescale=FALSE相同的雷達圖:cyl=4cyl=6
p3 <- ggRadar(mtcars_radar, mapping = aes(facet = cyl), rescale = FALSE)
p4 <- ggRadar(filter(mtcars_radar, cyl != 8), mapping = aes(facet = cyl), rescale = FALSE)
p3 / p4

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531109.html
標籤:rggplot2格拉达尔
