我想在一個分組的柱狀圖中顯示標簽。在 stackoverflow 中有許多關于這個問題的答案,我已經試過了,但在我的應用程式中沒有一個能用。
我的圖表顯示了兩個季度(2020年第四季度和2021年第一季度)的一組條形圖。標簽并沒有像它們應該的那樣出現在條形圖的頂部。我發現,當我改變圖表,只顯示2020年第四季度或2021年第一季度的條形圖時,標簽會正常出現,但當我將兩個季度的條形圖放在一起進行比較時,標簽不再出現在它們應該出現的位置。這是我的報告。希望得到幫助。
Date <- as. Date(c("2020-10-01"。 "2020-10-01","2020-10-01"。 "2020-10-01",>
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01","2021-01-01")>
GEO <- c()
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島",
"Nova Scotia","New Brunswick","Quebec"。 "安大略","曼尼托巴"。 "Saskatchewan",
"Alberta","British Columbia","Yukon"。 "西北地區","努納武特",
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島","新斯科舍",
"新不倫瑞克","魁北克","安大略"。 "Manitoba","Saskatchewan"。 "Alberta",
"不列顛哥倫比亞省","育空"。 "西北地區","努納武特")
JVR <- c(3. 5,2.6,3. 2,3.3, 3. 9,4.1, 3. 4,3.1,2. 3,2.4, 4. 2,4.4,3. 0,2.6,
3.6,2. 0,2.5, 3. 2,3.2,4。 2,3.3,3. 1,2.7,2.8,4. 5,4.7, 4. 2,3.6)。
df <- data.frame(Date=as. Date(Date)。 GEO=GEO,JVR=JVR)
ggplot(filter(df,Date>=as。 Date("2020-10-01"))。 aes(x=Date。 y=JVR。 fill=GEO))
geom_bar(stat="identity"/span>。 position="dodge")
geom_text(aes(label=JVR, group=GEO)。 position=position_dodge(width=0. 9),
vjust=-1。 size=3)。
uj5u.com熱心網友回復:
ggfittext包可以在這里提供幫助。如果你想讓標簽的文字大小相等,你可能需要使用format來轉換它們,否則,例如數字 "3 "會比 "3.1 "顯得更大,以適合在欄中。
獲取資料
library(tidyverse)
日期<-為。 Date(c("2020-10-01"。 "2020-10-01","2020-10-01"。 "2020-10-01",>
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01","2021-01-01")>
GEO <- c()
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島",
"Nova Scotia","New Brunswick","Quebec"。 "安大略","曼尼托巴"。 "Saskatchewan",
"Alberta","British Columbia","Yukon"。 "西北地區","努納武特",
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島","新斯科舍",
"新不倫瑞克","魁北克","安大略"。 "Manitoba","Saskatchewan"。 "Alberta",
"不列顛哥倫比亞省","育空"。 "西北地區","努納武特")
JVR <- c(3. 5,2.6,3. 2,3.3, 3. 9,4.1, 3. 4,3.1,2. 3,2.4, 4. 2,4.4,3. 0,2.6,
3.6,2. 0,2.5, 3. 2,3.2,4。 2,3.3,3. 1,2.7,2.8,4. 5,4.7, 4. 2,3.6)。
df <- data.frame(Date=as. Date(Date)。 GEO=GEO,JVR=JVR)
繪制資料
library(ggplot2)
library(ggfittext)
d.plot <- filter(df,/span>Date>=as. Date("2020-10-01"))。
ggplot(d. plot, aes(x=Date。 y=JVR,fill=GEO。 label=format(JVR, 數字= 2))
geom_bar(stat="identity"/span>。
# from `ggfittext`
geom_bar_text(position="dodge"/span>,
place="top",grow=F。 reflow=F,min. size=0)
theme_bw()

創建于2021-09-20,由reprex包(v2.0.1)
uj5u.com熱心網友回復:
我認為問題在于x軸上的連續Date變數。在你的例子中,x=Date,position_dodge(width=0.9)引數不起作用。
但是如果你將兩個感興趣的日期轉換成因子(例如2020 Q4和2021 Q1),那么width = 0.9引數就能發揮作用。在這個例子中,我認為這提供了一個更有意義的X軸,所以你不會混淆不同日期的躲閃條。
注意geom_col等同于geom_bar(stat = 'identity')。
# does not work。
ggplot(df, aes(x=date, y=JVR。 fill=GEO))
geom_col(position = 'dodge')
geom_text(aes(label=JVR)。 位置= position_dodge(width = . 9))

# works
df %>%
mutate(quarter = case_when()
日期 == "2020-10-01" ~ '2020 Q4',
日期 == "2021-01-01" ~ '2021 Q1')) %> %
ggplot(aes(x=quarter, y=JVR。 fill=GEO))
geom_col(position = 'dodge')
geom_text(aes(label=JVR)。 位置= position_dodge(width = . 9))

創建于2021-09-20,由reprex包(v2.0.0)創建
。資料
資料
library(tidyverse)
日期<-為。 Date(c("2020-10-01"。 "2020-10-01","2020-10-01"。 "2020-10-01",
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2020-10-01","2020-10-01",。 "2020-10-01","2020-10-01",
"2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01"。 "2021-01-01","2021-01-01","2021-01-01",/span>"2021-01-01"。 "2021-01-01","2021-01-01")>
GEO <- c()
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島",
"Nova Scotia","New Brunswick","Quebec"。 "安大略","曼尼托巴"。 "Saskatchewan",
"Alberta","British Columbia","Yukon"。 "西北地區","努納武特",
"加拿大","紐芬蘭和拉布拉多"。 "愛德華王子島","新斯科舍",
"新不倫瑞克","魁北克","安大略"。 "Manitoba","Saskatchewan"。 "Alberta",
"不列顛哥倫比亞省","育空"。 "西北地區","努納武特")
JVR <- c(3. 5,2.6,3. 2,3.3, 3. 9,4.1, 3. 4,3.1,2. 3,2.4, 4. 2,4.4,3. 0,2.6,
3.6,2. 0,2.5, 3. 2,3.2,4。 2,3.3,3. 1,2.7,2.8,4. 5,4.7, 4. 2,3.6)。
df <- data.frame(Date=as. Date(Date)。 GEO=GEO,JVR=JVR)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322196.html
標籤:
