Мой график произвольно отсортирован в алфавитном порядке по оси Y.
Вместо этого мне нужно, чтобы он был отсортирован по датам начала на оси x.
Я пробовал «переупорядочить» и изменить порядок уровней факторов - безуспешно.
Как отсортировать график по начальным датам таймфреймов по оси x, чтобы самый старый был первым?
Спасибо за любую наводку!
#Dataframe
data <- data.frame(name = c('Alex','Bobby','Chris','Zack'),
start = c('20.09.1949','04.10.1982','21.11.2007','28.09.2017'),
end = c('29.10.1957','27.10.1998', '28.10.2009','14.03.2018'),
Team = c('Right','Wrong','Wrong','Right'))
#Plot
ggplot(data, aes(x=start, xend=end, y=name, yend=name, color=Team)) +
geom_segment(size=4) +
labs(title='Overview', size= 6, x='Tenure', y='Judge') +
scale_colour_manual(values = c('red', 'black', 'green' , 'grey')) +
theme_wsj() +
theme(axis.title = element_text(),text = element_text(size=5), axis.text.x = element_text(angle=90, hjust=1)) +
theme(axis.text.y = element_text(lineheight = 2, size = 6))
Попробуй это:
library(dplyr)
library(ggplot2)
#Plot
data %>%
mutate(start=as.Date(start,'%d.%m.%Y'),
end=as.Date(end,'%d.%m.%Y'),
name=factor(name,levels = unique(name),ordered = T)) %>%
mutate(start=as.character(start),
end=as.character(end)) %>%
ggplot(aes(x=start, xend=end, y=name, yend=name, color=Team)) +
geom_segment(size=4) +
labs(title='Overview', size= 6, x='Tenure', y='Judge') +
scale_colour_manual(values = c('red', 'black', 'green' , 'grey')) +
theme(axis.title = element_text(),text = element_text(size=12),
axis.text.x = element_text(angle=90, hjust=1)) +
theme(axis.text.y = element_text(lineheight = 2, size = 6))
Выход:
@TomTe Привет, Том, я использовал mutate() для преобразования переменных в факторы, чтобы они могли правильно вписаться в ваш график. Надеюсь, это помогло, дайте мне знать, сработал ли код, и рассмотрите возможность принятия ответа, если решение помогло. Всегда рады Вам помочь!
это работает, и я думаю, я искал это имя = фактор (имя, уровни = уникальный (имя), упорядоченный = T)) почему вы используете функцию «мутировать» до этого? спасибо