我正在尝试将此解决方案https://github.com/wilkelab/ggtext应用于我的数据,以便从两列组合中创建滴答标签,并将不同的字体应用于每一列。我想我已经根据我的场景修改了示例代码,但是在发生突变阶段之后,我得到了这个错误:
check_breaks_labels中的错误(中断,标签):对象‘名称’未找到
任何指南针都会赏识。
我在找下面这样的东西。

下面是我尝试过的代码:
df$Colour <- as.factor(df$Colour)
df$Number <- as.factor(df$Number)
df$Family <- factor(df$Family, levels = c("Ardeidae"))
df %>% mutate(
name = glue("<i style={Comname} ({Sciname}</i>)"))%>%
ggplot(df[df$Value != 0,], aes(x=Sample, y=Number)) +
geom_point(aes(size=Value, alpha = 0.9)) +
scale_y_discrete(labels= name) +
facet_grid(Family ~ Year, scales = "free", space = "free") 还有一些样本数据。
df <- structure(list(Year = c("1984 - 1989", "2017 - 2020", "1984 - 1989",
"2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020",
"1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989",
"2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020",
"1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989",
"2017 - 2020"), Sample = c("Developed_zone_1992", "Developed_zone_2020",
"Paddock_zone_1992", "Paddock_zone_2020", "Sanctuary_zone_1992",
"Sanctuary_zone_2020", "Developed_zone_1992", "Developed_zone_2020",
"Paddock_zone_1992", "Paddock_zone_2020", "Sanctuary_zone_1992",
"Sanctuary_zone_2020", "Developed_zone_1992", "Developed_zone_2020",
"Paddock_zone_1992", "Paddock_zone_2020", "Sanctuary_zone_1992",
"Sanctuary_zone_2020", "Developed_zone_1992", "Developed_zone_2020",
"Paddock_zone_1992", "Paddock_zone_2020", "Sanctuary_zone_1992",
"Sanctuary_zone_2020"), Colour = structure(c(1L, 1L, 2L, 2L,
3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L,
2L, 2L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"),
Value = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 1L,
2L, 0L, 0L, 1L, 0L, 0L, 10L, 1L, 5L, 5L, 0L, 5L), Family = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Ardeidae", class = "factor"),
Comname = c("47. Little egret", "47. Little egret", "47. Little egret",
"47. Little egret", "47. Little egret", "47. Little egret",
"46. Western great egret", "46. Western great egret", "46. Western great egret",
"46. Western great egret", "46. Western great egret", "46. Western great egret",
"45. Purple heron", "45. Purple heron", "45. Purple heron",
"45. Purple heron", "45. Purple heron", "45. Purple heron",
"44. Grey heron", "44. Grey heron", "44. Grey heron", "44. Grey heron",
"44. Grey heron", "44. Grey heron"), Sciname = c("Egretta garzetta",
"Egretta garzetta", "Egretta garzetta", "Egretta garzetta",
"Egretta garzetta", "Egretta garzetta", "Ardea alba", "Ardea alba",
"Ardea alba", "Ardea alba", "Ardea alba", "Ardea alba", "Ardea purpurea",
"Ardea purpurea", "Ardea purpurea", "Ardea purpurea", "Ardea purpurea",
"Ardea purpurea", "Ardea cinerea", "Ardea cinerea", "Ardea cinerea",
"Ardea cinerea", "Ardea cinerea", "Ardea cinerea"), Number = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("96", "97", "98",
"99"), class = "factor")), row.names = c(NA, -24L), class = "data.frame")


发布于 2020-09-08 15:26:23
正如@Duck已经指出的,代码中存在一些小问题。不幸的是,这些并不能解决ggtext问题
当您想要使用theme().中的标记元素时,必须通过在中设置axis.text.y = element_markdown()来使用element_markdown
.来转义Comname中的点.。(原因是,后面跟着.的数字标志着标价中有序列表的开始。)在这些更改之后,
scale_y_discrete。默认情况下,ggplot2将使用name标记蜱。
df$Colour <- as.factor(df$Colour)
df$Number <- as.factor(df$Number)
df$Family <- factor(df$Family, levels = c("Ardeidae"))
library(dplyr)
library(glue)
library(ggplot2)
library(ggtext)
df1 <- df %>%
mutate(
Comname = stringr::str_replace(Comname, "\\.", "."),
name = glue::glue("{Comname} <i>{Sciname}</i>")
) %>%
filter(Value != 0)
df1 %>%
ggplot(aes(x = Sample, y = name)) +
geom_point(aes(size = Value, alpha = 0.9)) +
facet_grid(Family ~ Year, scales = "free", space = "free") +
theme(axis.text.y = element_markdown())

https://stackoverflow.com/questions/63793992
复制相似问题