根据数据集中的列对图中的分面进行排序
Ordering Facets in a plot based on a column in the dataset
所以,我有一个看起来像 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")
但是,我还必须按纬度对分面进行排序(目前,它类似于 site01、site02 等,但我希望对分面网站进行排序 w.r.t。它们的纬度值,无论是升序还是降序) 但遗憾的是我不知道我将如何做到这一点。
因此,有人可以告诉我该怎么做吗?
考虑按 latitude 对您的数据框进行排序,然后重新分配 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, ...)
所以,我有一个看起来像 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")
但是,我还必须按纬度对分面进行排序(目前,它类似于 site01、site02 等,但我希望对分面网站进行排序 w.r.t。它们的纬度值,无论是升序还是降序) 但遗憾的是我不知道我将如何做到这一点。
因此,有人可以告诉我该怎么做吗?
考虑按 latitude 对您的数据框进行排序,然后重新分配 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, ...)