不幸的是,我的ggplot出現了問題。
這是我的資料框架的一個子集:
這是我的資料框架的一個子集。
Name < - c('1'/span>。 '2','3'。 '4','5'。 '6','7', '8'。 '9','10'。 '11','12'。 '13','14'。 '15','16'。 '17','18'。 '19','20'。 '21','22'。 '23','24'。 '25','26'。 '27','28'。 '29','30'。 '31','32')
Gruppe < -c('A'。 'A','B','B'。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'A'/span>,'A'/span>。 'B','B'。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C'/span>, 'C'/span>。 'C', 'C')
組 < -c('A'>。 'A','B','B'。 'CA', 'CA', 'GE',/span>'GE'。 'SA',/span>'SA'。 'ST',/span>'ST'。 'STR', 'STR', 'WA','WA')
地點 < -c('CO'。 'UF', 'CO', 'UF', 'CO', 'UF', 'CO', 'UF', 'CO', 'UF', 'CO', 'UF', 'CO', 'UF','CO','UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO',/span>'UF'。 'CO','UF')
值<-c(3. 5,6.6, 1. 9,9.2,5. 2,4.4,6. 8,3.2, 2. 7,7.1,4. 3,9.8,4,8。 3,5,6。 1,3,8。 4,4.8,9. 1,1. 4,4,8.9,3. 6,4,8. 4,6.1,2. 5,4.5,9. 3,6.7,4.6)
data <- data. frame(Name, Gruppe。 集團,地點,價值)
我想用ggplot按照 "組 "分開繪制。 我的代碼:
ggplot(data。 aes(x=Location, y=Value。 fill=Group))
geom_boxplot()
scale_color_brewer(palette="Paired")/span>
theme_classic()
scale_fill_manual(values=c("chartreuse3"。 "yellow2",
"Firebrick3", "cyan4"。 "darkgoldenrod2","darkorange4"。 "darkgreen", "deeppink3", "darksalmon"))
但是,我還想在 "Gruppe "中添加 "C",作為一個額外的boxplot,應該顯示在圖例中,總結從 "CA "到 "WA "的 "群體"。有什么方法可以做到這一點嗎?最好不要改變資料集本身,它的原始形式非常大。這方面的boxplot應該在 "A "和 "B "旁邊,并且看起來是一樣的,即寬度。
示例圖片(很抱歉,看起來很糟糕)。 在此輸入圖片描述
感謝您的每一次幫助,如果有什么遺漏,我將努力解釋。
uj5u.com熱心網友回復:
@Peter 哦,哇,你做到了! 非常感謝你! 我很想完全使用你的解決方案,但在原始資料集中我有六個地點。如果使用facet wrap,那就有點過頭了。我設法對你的代碼做了一點改動:
ggplot(data1。 aes(x = Location, y = PH1。 填補= grp_id))
geom_boxplot()
theme_classic() >
scale_x_discrete(expand = expansion(添加= c(0。 5, 0. 7)))
scale_y_continuous(expand = expansion(mult = c(0。 02, 0. 08)))
scale_color_brewer(palette = "Paired")/span>
scale_fill_manual(values=c("chartreuse3"。 "yellow2",
"Firebrick3", "cyan4"。 "darkgoldenrod2","darkorange4",
"darkgreen","deeppink3","dsarksalmon"。 "red", "green"))
uj5u.com熱心網友回復:
這仍然要經過(暫時的)資料重復,如果你想避免這一點,我看到的唯一方法是為基本資料集和Gruppe == "C"子集預先計算boxplots的美學。
geom_boxplot()
data = . %>% union_all(., filter(. , Gruppe == "C") %> % mutate(Group = "C"))
)
uj5u.com熱心網友回復:
基于你的草圖,這對你的幫助很大,這可能是一個解決方案。
資料以長格式準備,過濾掉Group A和B,因為這些在Gruppe中是重復的。
合并的grp變數 "Group "和 "Gruppe "的值被制作成一個因子,因此當分面時它們以正確的順序繪制。
為Group和Gruppe的id準備了一個單獨的標簽資料框,以便id可以位于boxplots的最大值處。
為了視覺效果,對圖表的輸入引數進行了編輯,以確保為標簽留出空間,并確保箱形圖的寬度相同。
library(ggplot2)
library(dplyr)
library(tidyr)
library(stringr)
data1<-
data %>%。
pivot_longer(cols = c(Gruppe。 集團)。 names_to = "grp"。 values_to = "grp_id") %> %
filter(grp ! = "Group" | ! grp_id %in% c("A"/span>。 "B") %> %
mutate(grp = factor(grp。 水平= c("Gruppe"/span>。 "Group")))
lab_group <-
data1 %>%。
group_by(Location, grp_id) %>%
filter(Value == max(Value))
ggplot(data1, aes(x = grp_id。 y = Value。 填補= grp_id))
geom_boxplot()
geom_text(data = lab_group, aes(label = grp_id)。 vjust = -0。 2, hjust = -0. 2 )
scale_x_discrete(expand = expansion(添加= c(0。 5, 0. 7)))
scale_y_continuous(expand = expansion(mult = c(0。 02, 0. 08)))
scale_color_brewer(palette = "Paired")/span>
scale_fill_manual(values=c("chartreuse3"。 "yellow2",
"Firebrick3", "cyan4"。 "darkgoldenrod2","darkorange4",
"darkgreen","deeppink3","dsarksalmon"。 "red"。 "green"))
facet_grid(Location~grp,)
空間= "free_x",
scales = "free_x")
theme_bw()
主題(legend.position = "none",
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
axis.title.x = element_blank())

創建于2021-09-16,由reprex包(v2.0.0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318898.html
標籤:
下一篇:在R中為分類點的邊界添加標簽

