【发布时间】:2023-03-15 07:00:01
【问题描述】:
我有一个包含以下列名称/标题的数据框:
date time id datetime site origin species genus sex PP repro
我正在尝试用 ggplot 绘制一个多面图,其中 y 轴是我的所有“id”,按照“sex”的顺序,然后按照“repro”的顺序......所以理想情况下,所有女性“id”都会位于顶部并按生殖状态顺序排列,然后在其下方是所有男性“id”,按其生殖状态分组(女性 - 怀孕,女性 - 未怀孕,男性 - 生殖,男性 - 非 - 按此顺序)。这是我的 ggplot 代码目前的样子:
Presence<-ggplot(data, aes(x=date,y=reorder(sex,repro)))+
geom_point(aes(x=date,y=Presence,colour=sex))+facet_grid(id~.)+
theme()+
ylab("\n")+
theme(legend.position="none",
axis.text.y= element_blank(),
strip.text.y=element_text(angle=0))
在这里按两个变量重新排序显然不起作用...
如果这有用...这里有一些来自 dput 的更多信息:
structure(list(date = structure(c(16439, 16439, 16443, 16444,
16444, 16445), class = "Date"), time = c("05:11:00.470", "19:41:08.120",
"20:45:38.570", "22:27:59.370", "22:53:13.370", "18:44:49.630"
), id = c("989001000312244", "989001000312244", "989001000312214",
"989001000312285", "989001000312285", "989001000312252"), datetime = structure(list(
sec = c(0.47, 8.12, 38.57, 59.37, 13.37, 49.63), min = c(11L,
41L, 45L, 27L, 53L, 44L), hour = c(5L, 19L, 20L, 22L, 22L,
18L), mday = c(4L, 4L, 8L, 9L, 9L, 10L), mon = c(0L, 0L,
0L, 0L, 0L, 0L), year = c(115L, 115L, 115L, 115L, 115L, 115L
), wday = c(0L, 0L, 4L, 5L, 5L, 6L), yday = c(3L, 3L, 7L,
8L, 8L, 9L), isdst = c(0L, 0L, 0L, 0L, 0L, 0L), zone = c("PST",
"PST", "PST", "PST", "PST", "PST"), gmtoff = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
)), .Names = c("sec", "min", "hour", "mday", "mon", "year",
"wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt",
"POSIXt")), site = c("chivato", "chivato", "chivato", "chivato",
"chivato", "chivato"), origin = structure(c(2L, 2L, 2L, 2L, 2L,
2L), .Label = c("carmen", "chivato", "la capilla", "las cuevas",
"lto1"), class = "factor"), species = structure(c(2L, 2L, 2L,
2L, 2L, 2L), .Label = c("californicus", "yerbabuenae"), class = "factor"),
genus = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Leptonycteris",
"Macrotus"), class = "factor"), sex = structure(c(1L, 1L,
2L, 2L, 2L, 2L), .Label = c("female", "male", "unrecorded"
), class = "factor"), PP = c(1, 1, 1, 1, 1, 1), repro = structure(c(2L,
2L, 2L, 2L, 2L, 2L), .Label = c("lactating", "non", "postlactating",
"pregnant", "testes"), class = "factor")), .Names = c("date",
"time", "id", "datetime", "site", "origin", "species", "genus",
"sex", "PP", "repro"), row.names = c(846L, 878L, 1101L, 1152L,
1154L, 1185L), class = "data.frame")
【问题讨论】:
-
听起来您需要使用
factor中的levels参数以您希望它们的任何顺序获取两个因子(sex和repro)的水平,并且然后在绘图之前按这些因素对数据集进行排序。 -
谢谢!这就是我最终做的事情......希望有一种方法可以从 ggplot 中订购构面,但看起来在绘图之前手动订购是最好的选择。
标签: r ggplot2 facet reorderlist