如何使用ggplot2以斜体书写X标签的部分字符串?

2024-03-03

我有一个数据框:

                        ID   Strain value Type      Gene
182 VFG007613(gi:27366370) Strain-1     0    X      motY
183 VFG007614(gi:37679367) Strain-1     1    X      motY
184 VFG007619(gi:27364700) Strain-1     0    X      motX
185 VFG007620(gi:37681249) Strain-1     1    X      motX
186 VFG007622(gi:27364235) Strain-1     0    X       wza
187 VFG007623(gi:37678521) Strain-1     1    X       wza
188 VFG007627(gi:37678523) Strain-1     1    X       wzb
189 VFG007629(gi:27364230) Strain-1     1    X       wzc
190 VFG007630(gi:37678524) Strain-1     0    X       wzc
191 VFG007640(gi:37678525) Strain-1     0    X wbjD/wecB
192 VFG007653(gi:27364224) Strain-1     1    X      wbfY
193 VFG007654(gi:37678548) Strain-1     0    X      wbfY
194 VFG007656(gi:27364223) Strain-1     0    X wbfV/wcvB
195 VFG007657(gi:37678549) Strain-1     0    X wbfV/wcvB
196 VFG007668(gi:27367928) Strain-1     1    X     GeneA
197 VFG007669(gi:37676055) Strain-1     0    X     GeneA

基因的名称类似于 wbfY,最后一个字母始终为大写,因此我想使用除大写外的斜体 Gene 列来绘制 axis.text.x,如下所示:wbfY, wbjD/wecB, motY, motX, geneG, anynameA. 可以使用某些函数将所有文本绘制为斜体(genename) 除了大写斜体(:upper:):genenameD.

或者有什么办法可以做到吗?

ggplot(mydf, aes(x=Gene, y=Strain, fill = Type, alpha = value)) + 
    scale_fill_manual(values = c("#336666", "#006699")) +
    geom_tile(colour = "grey79") +
    scale_alpha_identity(guide = "none") +
    coord_fixed(ratio = 2.4) +
    theme_bw() +
    theme(text = element_text(family = "Times New Roman"), # corresponde a todo en Time New Romans 
          legend.position="bottom", 
          legend.title = element_text(size = 14), # legend size title, corresponde a Genotype
          legend.text  = element_text(size = 14), # corresponde a vcgC and vcgE
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          axis.text.x = element_text(angle = 90, size = 18, hjust =1, vjust = 0.5, face = "italic"),
          axis.title.x = element_text(size = 15, face = "bold"),
          axis.text.y = element_text(angle = 0, hjust = 1, size = 12, face = "bold"),
          axis.title.y = element_text(size = 15, face = "bold")
    )

在这种情况下,所有 axis.text.x 都是斜体,但我想避免使用大写!

我怎样才能做到这一点?

非常感谢


你能做的就是把基因分成几个部分并使用glue使最后一个字母变为斜体element_rmarkdown from ggtext像这样:

library(tidyverse)
library(stringi)
library(glue)
library(ggtext)
mydf %>%
  mutate(Gene_last_letter = stri_sub(Gene, -1, -1),
         Gene_first_letters = str_sub(Gene, 1, str_length(Gene)-1)) %>%
  mutate(Gene = glue("<i>{Gene_first_letters}</i>{Gene_last_letter}")) %>%
  ggplot(aes(x=Gene, y=Strain, fill = Type, alpha = value)) + 
  scale_fill_manual(values = c("#336666", "#006699")) +
  geom_tile(colour = "grey79") +
  scale_alpha_identity(guide = "none") +
  coord_fixed(ratio = 2.4) +
  theme_bw() +
  theme(text = element_text(family = "Times New Roman"), # corresponde a todo en Time New Romans 
        legend.position="bottom", 
        legend.title = element_text(size = 14), # legend size title, corresponde a Genotype
        legend.text  = element_text(size = 14), # corresponde a vcgC and vcgE
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.x =  element_markdown(angle = 90, size = 18, hjust =1, vjust = 0.5), 
        axis.title.x = element_text(size = 15, face = "bold"),
        axis.text.y = element_text(angle = 0, hjust = 1, size = 12, face = "bold"),
        axis.title.y = element_text(size = 15, face = "bold")
  )

Output:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用ggplot2以斜体书写X标签的部分字符串? 的相关文章

  • 如何在R中安装pivot_long()和pivot_wide()

    如果您想尝试这些新功能 pivot wide and pivot long 需要安装开发版tidyr devtools install github tidyverse tidyr 但我还没有实现它 我安装了一系列库 除了一个之外 vctr
  • R xts 对象中从每日时间序列到每周时间序列

    我正在使用 Zoo 和 xts 包来分析财务数据 ts 包不太合适 因为金融系列有周末 没有可用数据 我读到了 xts 包中可用的 apply 函数 apply daily x FUN apply weekly x FUN apply mo
  • e_facet 在 echarts4r 问题中使用分组数据

    我真的很喜欢这个包提供的可能性 并且想在一个闪亮的应用程序中使用它 然而我正在努力重新创建从 ggplot 到 echarts4r 的情节 library tidyverse library echarts4r data tibble ti
  • R 子集 XTS 工作日

    如何对 xts 对象进行子集化以仅包含工作日 周一至周五 周六和周日除外 这就是我要做的 library xts data sample matrix sample xts lt as xts sample matrix descr my
  • Rcpp 包不包含 Rcpp_precious_remove

    我一直在尝试创建数据库并安装 DBI 包 但仍然遇到此错误 我重新安装了 DBI 和 RSQLite 软件包 但它们似乎不起作用 library DBI con lt dbConnect RSQLite SQLite dbname memo
  • 是否可以创建根据输入对象名称自行命名的列表?

    能够创建 R 列表对象而无需指定每个元素的名称对我来说非常有帮助 例如 a1 lt 1 a2 lt 20 a3 lt 1 20 b lt list a1 a2 a3 inherit name TRUE gt b a1 1 1 a2 1 20
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • “x[] <- as.integer(x)”是什么意思

    当我阅读 R 手册时 我遇到了如下代码行 从 R 手册中的 colSums 复制 x lt cbind x1 3 x2 c 4 1 2 5 dimnames x 1 lt letters 1 8 x lt as integer x 有人能告
  • 消除垂直线ggplot

    这个问题以前曾被问过 但答案并不总是明确或很复杂 我希望 ggplot2 的新版本能够带来更简单的解决方案 如何仅消除 ggplot 的垂直线而不消除轴刻度线或标签 这对于条形图来说确实很好 因为它可以消除图形中一些不必要的干扰 这里有一些
  • 从 SpatialPolygons 和其他 sp 类中提取要素坐标

    Package sp为不同的空间概念 点 线 多边形 提供了许多类 对于某些类 访问要素坐标很简单 例如SpatialLines 所有示例均取自相应课程的帮助页面 l1 cbind c 1 2 3 c 3 2 2 l1a cbind l1
  • Pyspark - 一次聚合数据帧的所有列[重复]

    这个问题在这里已经有答案了 我想将数据框分组到单个列上 然后对所有列应用聚合函数 例如 我有一个包含 10 列的 df 我希望对第一列 1 进行分组 然后对所有剩余列 均为数字 应用聚合函数 sum 与此等效的 R 是 summarise
  • R - 加速近似日期匹配。 idata.frame?

    我正在努力有效地执行两个数据帧之间的 关闭 日期匹配 这个问题探索了一个解决方案 使用idata frame来自plyr包 但我也对其他建议的解决方案感到非常满意 这是两个数据框的非常简单的版本 sampleticker lt data f
  • 通过 boot.ci 函数获取多个统计数据的 Bootstrap 置信区间

    我想通过以下方式获得多个统计数据的引导置信区间boot ci功能 这是我的 MWE 我有两个统计数据out并想要找到这两个统计数据的引导置信区间 然而 boot ci函数仅为第一个统计量 t1 提供引导置信区间 但不为第二个统计量 t2 提
  • R闪亮:在渲染表格时显示“正在加载...”消息

    在 Rstudio Shiny 中 我得到了一些renderDataTable通过 RMySQL 从数据库获取信息的调用 有些查询可能需要几秒钟才能完成 我想添加一条 正在加载 消息 其中表格将在等待时最终呈现 这个问题与这个问题类似 R闪
  • 在 dplyr 中,setdiff 和 anti_join 之间的本质区别是什么?

    我仍在学习 DataCamp for R 的课程 所以如果这个问题看起来很幼稚 请原谅我 考虑以下 非常做作的 示例 library dplyr library tibble type lt c Dog Cat Cat Cat name l
  • 如何在 R 中的多图形环境中画一条线?

    举一个非常简单的例子 mfrow c 1 3 每个图都是不同的直方图 我将如何画一条水平线 类似于abline h 10 所经过的all3位数 也就是说 甚至是它们之间的边距 显然 我可以为每个图形添加一条 abline 但这不是我想要的
  • ggplot:如何检索轴标签的值?

    如何提取下面的 ggplot 中用于标记 y 轴和 x 轴的数字 分别为20 30 40 and 10 15 20 25 30 35 Plot From r 统计公司 http r statistics co Top50 Ggplot2 V
  • R: pi[[j]] 中的错误:下标越界——数据帧列表上的 rbind

    我正在尝试重新绑定一个大的数据帧列表 outputDfList 它是通过将一个复杂的函数应用于一个大表而生成的 您可以通过以下方式重新创建outputDfList df1 data frame randomseq chr15q22 1 tr
  • R CMD INSTALL --build package --> “小插图丢失”

    问题 C gt Rcmd exe INSTALL build library C Users local aphalo Documents R win library 3 0 photobiology C gt Rcmd exe INSTA
  • 根据R中的行差异对行进行分组[重复]

    这个问题在这里已经有答案了 我有一组具有不同采样间隔的动物位置 我想要做的是采样间隔符合特定标准 例如低于特定值 的组和序列 让我用一些虚拟数据来说明 start lt Sys time timediff lt c rep 5 3 20 r

随机推荐