Упорядочивание фасетов на графике на основе столбца в наборе данных

Итак, у меня есть набор данных, который выглядит как этим.

Мне поручено создать плавную многогранную визуализацию, показывающую скорость обесцвечивания каждого коралла на каждом участке, что я успешно сделал, например:

(Я ПОЛНОСТЬЮ понимаю, что этот код может быть плохим и содержать некоторые ошибки, и я был бы очень признателен, если бы люди могли рассказать мне, как его улучшить или исправить некоторые серьезные ошибки в нем).

coral_data <- read.csv("file.csv")

#options(warn=-1)

library(ggplot2)

ggplot(coral_data, aes(x=year, y=value, colour=coralType, group=coralType)) +
  geom_smooth(method="lm", se=F) +
  scale_x_continuous(name="Year", breaks=c(2010, 2013, 2016)) + 
  scale_y_discrete(breaks = seq(0, 100, by = 10)) +
  facet_grid(coralType ~ location, scales="free")+
  expand_limits(y=0) +
  labs(x="\nBleaching Rate", y="Year", title="Coral Bleaching for different corals at different sites over the years\n")

введите здесь описание изображения

Но мне также нужно упорядочить фасеты по широте (в настоящее время это вроде site01, site02 и т. д., но я хочу, чтобы фасетные сайты упорядочивались по их значениям широты, будь то по возрастанию или по убыванию), но, к сожалению, я понятия не имею, как Я собираюсь сделать это.

Таким образом, может ли кто-нибудь сказать мне, как это сделать?


person dealvidit    schedule 25.04.2020    source источник
comment
см. здесь создание вопроса R, с которым люди могут помочь . Мы не можем запустить код на изображении ваших данных и не можем увидеть диаграмму, которую вы пытаетесь изменить. Вероятно, вам нужно преобразовать переменную фасетирования в фактор, который вы можете упорядочить по своему усмотрению; есть много сообщений SO о подобных вещах, таких как stackoverflow.com/q/43290483/5325862   -  person camille    schedule 25.04.2020
comment
@камилла прости. Я сделал соответствующие корректировки. Спасибо.   -  person dealvidit    schedule 25.04.2020
comment
@camile Кроме того, я видел много сообщений об этом, но не многие рассказывают вам, как упорядочить фасеты на основе другого столбца вашего набора данных. Некоторые из них, да, но мои извинения, я все еще немного запутался в этом.   -  person dealvidit    schedule 25.04.2020
comment
Если вы пытаетесь переупорядочить коэффициент по одному или двум другим столбцам, в пакете forcats есть вспомогательные функции, которые могут работать, например fct_reorder или fct_reorder2. Хорошая иллюстрация к этому сообщению   -  person camille    schedule 25.04.2020


Ответы (1)


Попробуйте упорядочить свой фрейм данных по широте, а затем переназначьте факторную переменную location, определив ее уровни в новом порядке с помощью unique:

# ORDER DATA FRAME BY ASCENDING LATITUDE
coral_data <- with(coral_data, coral_data[order(latitude),])    
# ORDER DATA FRAME BY DESCENDING LATITUDE
coral_data <- with(coral_data, coral_data[order(rev(latitude)),])

# ASSIGN site AS FACTOR WITH DEFINED LEVELS
coral_data$location <- with(coral_data, factor(as.character(location), levels = unique(location)))

ggplot(coral_data, ...)
person Parfait    schedule 25.04.2020
comment
Большое спасибо! На самом деле я думал заранее заказать фрейм данных, но я все еще не понимал факторную переменную и то, как ее использовать. - person dealvidit; 25.04.2020
comment
Приятно слышать и рад помочь! Удачного кодирования! - person Parfait; 25.04.2020