我在RStudio中使用ggplot2來繪製一個圖表,我很難弄清楚在我的R代碼中我的錯誤出現在我的數據集名爲「Mth」的列的排序順序中。爲什麼ggplot2在特定變量上忽略我的R代碼的排序順序?
我的數據集被稱爲data1
和它只有2列,即Age
和Mth
我的代碼立場如下:
library(ggplot2)
data1 <- read.csv("myfile.csv", as.is=TRUE, header = TRUE)
Month <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Month2 <- factor (Month,
levels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
ordered = TRUE)
mean_age <- data1 %>%
filter(Mth %in% Month2) %>%
group_by(Mth) %>%
summarize(xbar = round(mean(Age, na.rm = TRUE), 0))
mean_age$y <- 0.3
yr_labs <- data.frame(x = 85, y = 0.8,
Mth = Month2)
p <- ggplot(subset(data1, Mth %in% Month2), aes(x = Age))
p1 <- p + geom_density(fill = "gray20", color = FALSE,
alpha = 0.9, mapping = aes(y = ..scaled..)) +
geom_vline(data = subset(mean_age, Mth %in% Month2),
aes(xintercept = xbar), color = "white", size = 0.5) +
geom_text(data = subset(mean_age, Mth %in% Month2),
aes(x = xbar, y = y, label = xbar), nudge_x = 1.2,
color = "white", size = 3.5, hjust = 1) +
geom_text(data = subset(yr_labs, Mth %in% Month2),
aes(x = x, y = y, label = Mth)) +
facet_grid(Mth ~ ., switch = "y")
這裏是現行規範的輸出:
可以看出,月份(我的數據集中的列)不符合我上面創建的排序順序。
我在做什麼錯?
你必須重新排序因子水平的數據
ordered
因素。排序不會影響ggplot2如何顯示它。 – BLT@BLT謝謝你的回答。我是不是已經通過將其分配給'Month2'來重新排序因子水平? – user3115933
看着你的代碼,我想你實際上需要'Mth'作爲正確級別順序的因素。你不是按照「Month2」進行分組,也不是按照它來進行分組,你使用的是「Mth」,我看不出你已經進行了相關調整。 – BLT