我正在嘗試使用 geom_point 和 geom_text 在 ggplot 中創建標簽,該標簽僅標記每年的第一季度,而兩者之間沒有標簽。標記的“點”應該只給出年份。
所以 2009 2010 2011 等等。我確信有一個簡單的方法可以做到這一點,但我被卡住了!
我應該補充一點,我希望“以編程方式”而不是手動執行此操作,因為我將針對多個資料集和數年執行此操作。感謝任何幫助!
代碼:
library(tidyverse)
library(pxweb)
library(lubridate)
# Download data from Statistic Sweden
# PXWEB query
pxweb_query_list <-
list("Kon"=c("1 2"),
"Alder"=c("tot16-64"),
"Arbetskraftstillh"=c("AL?S"),
"ContentsCode"=c("0000062S"),
"Tid"=c("*"))
# Download data on unemployment and vacancy rates
unemp <-
pxweb_get(url = "https://api.scb.se/OV0104/v1/doris/en/ssd/AM/AM0403/AM0403A/NAKUBefolkning2KTD",
query = pxweb_query_list)
# Convert to data.frame
unemp <- as.data.frame(unemp, column.name.type = "text", variable.value.type = "text")
# PXWEB query
pxlist2 <-
list("Antanstallda"=c("TOT"),
"ContentsCode"=c("AM0701F4"),
"Tid"=c("*"))
vacancy <-
pxweb_get(url = "https://api.scb.se/OV0104/v1/doris/en/ssd/AM/AM0701/AM0701D/KVRekVakStor",
query = pxlist2)
# Convert to data.frame
vacancy <- as.data.frame(vacancy, column.name.type = "text", variable.value.type = "text")
rm(pxlist2, pxweb_query_list)
# Fix date-format
unemp$quarter <- yq(unemp$quarter)
vacancy$quarter <- yq(vacancy$quarter)
# Join df's
final <- inner_join(unemp, vacancy, by = "quarter")
# clean names
final <- final %>% janitor::clean_names()
# rename etc
final <- final %>%
mutate(unemp = percent) %>%
mutate(date = quarter) %>%
select(date, unemp, vacancy_rate)
# Seperate data in two periods
final <- final %>%
mutate(period =
case_when(
date>=ymd('2002-04-01') & date<ymd('2008-01-01') ~ "one",
date>=ymd('2008-01-01') & date<=ymd('2015-01-01') ~ "two"))
ggplot(final)
aes(x = unemp,
y = vacancy_rate,
group = period,
color = period,
label = date)
geom_point()
geom_path()
geom_text()
facet_wrap(~period)
theme_gray()
結果目前看起來像這樣(它是中間程序,我知道它看起來很難看):

uj5u.com熱心網友回復:
通常,最簡單的方法是在資料框中創建另一個label變數,并用于ifelse()將您不想要的標簽設定為空字串""。
請參見下面的示例,我在其中創建date_label月份 == 1 的年份,以及標簽為 的任何其他時間""。
final <- final %>%
mutate(
period = case_when(
date>=ymd('2002-04-01') & date<ymd('2008-01-01') ~ "one",
date>=ymd('2008-01-01') & date<=ymd('2015-01-01') ~ "two"),
date_label = ifelse(month(date) == 1, year(date), "")
)
該圖仍然看起來很難看,但至少現在標簽是正確的:)

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533303.html
標籤:rggplot2几何文本
