Упорядочение граней на графике на основе столбца в наборе данных - PullRequest
3 голосов
/ 25 апреля 2020

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

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

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

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")

enter image description here

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

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

1 Ответ

3 голосов
/ 25 апреля 2020

Рассмотрите возможность упорядочить ваш фрейм данных по широте , а затем переназначить 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, ...)
...