首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主题元素中的ggplot2标记。将两列组合成一个具有不同字体的滴答标签

主题元素中的ggplot2标记。将两列组合成一个具有不同字体的滴答标签
EN

Stack Overflow用户
提问于 2020-09-08 12:30:01
回答 1查看 177关注 0票数 1

我正在尝试将此解决方案https://github.com/wilkelab/ggtext应用于我的数据,以便从两列组合中创建滴答标签,并将不同的字体应用于每一列。我想我已经根据我的场景修改了示例代码,但是在发生突变阶段之后,我得到了这个错误:

check_breaks_labels中的错误(中断,标签):对象‘名称’未找到

任何指南针都会赏识。

我在找下面这样的东西。

下面是我尝试过的代码:

代码语言:javascript
复制
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") 

还有一些样本数据。

代码语言:javascript
复制
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")

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-08 15:26:23

正如@Duck已经指出的,代码中存在一些小问题。不幸的是,这些并不能解决ggtext问题

当您想要使用theme().中的标记元素时,必须通过在中设置axis.text.y = element_markdown()来使用element_markdown

  1. 要使样式工作,您必须通过HTML &#46;来转义Comname中的点.。(原因是,后面跟着.的数字标志着标价中有序列表的开始。)

在这些更改之后,

  1. 不需要scale_y_discrete。默认情况下,ggplot2将使用name标记蜱

代码语言:javascript
复制
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, "\\.", "&#46;"),
    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())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63793992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档