[英]Changing order of x-axis labels in ggplot
我的日期為'Dec-17','Jan-18','Feb-18','Mar-18','Apr-18','May-18','Jun-18','Jul-18','Aug-18'
當我繪圖時,我需要將其保留在 x 軸上。 但是 x 軸正在重新排序。 我嘗試了因素方法,然后我也得到了相同的結果:
> data_$Dates
[1] Apr-18 Aug-18 Dec-17 Feb-18 Jan-18 Jul-18 Jun-18 Mar-18 May-18
9 Levels: Apr-18 Aug-18 Dec-17 Feb-18 Jan-18 Jul-18 Jun-18 ... May-18
但是,我需要從Dec-17
而不是Apr-18
Dec-17
開始遵循相同的格式我的代碼:
data_$Dates <- factor(data_$Dates, levels = data_$Dates[order(data_$`Expected`)])
data_$Dates
ggplot(data=data_, aes(x=Dates, y=`Expected`, group=1)) +
geom_line()+
geom_point()
您正在按字母順序重新排序。 您可能希望將數據轉換為這樣解釋的數據類型(如@Wimpel 在他/她的評論中所建議的那樣)。 或者,由於您只有 9 個唯一值,您可能需要手動重新排序:
date_$Dates <- factor(date_$Dates, levels = c("Dec-17", "Jan-18", "Feb-18"))
(您必須擴展以包括我省略的六個月)。
讓我們先生成一些示例數據:
set.seed(123)
data_ <- data.frame(Expected = sample(1:10, 9), Dates = c('Dec-17','Jan-18',
'Feb-18','Mar-18', 'Apr-18', 'May-18','Jun-18', 'Jul-18', 'Aug-18'),
stringsAsFactors = FALSE)
正如@Wimpel 所說,最自然的方法是將數據列轉換為數據類型列。 在這里,您可以找到有關可能的方法的全面討論。 最方便的解決方案之一是使用 lubridate 包:
library(lubridate)
data_$Dates_data <- as.Date(parse_date_time(data_$Dates, "m-y"))
現在您有一個日期格式的列用作 x 數據,您可以根據自己的喜好調整 x 標簽的格式(同樣,正如@Wimpel 建議的那樣):
pl_1 <- ggplot(data = data_, aes(x = Dates_data, y = Expected,
group = 1)) +
geom_line() +
geom_point() +
scale_x_date(date_labels = "%b-%y", date_breaks = "1 month")
plot(pl_1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.