首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何包装和截断轴标签通过ggplot?

我如何包装和截断轴标签通过ggplot?
EN

Stack Overflow用户
提问于 2022-08-15 06:05:28
回答 1查看 67关注 0票数 0

我在柱状图上的轴标签太长了。最初,我通过stringr解决了这个问题,这要感谢狄比森对一个现存问题的解决,它允许我使用以下代码截断标签:

代码语言:javascript
运行
复制
ig_plot + scale_x_discrete(label = function(x) str_trunc(x, width = 40)) +
          theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))

用截短标签绘制

然后,我决定要显示更多的字符,并找到了桑迪·穆斯普拉特对现存问题的解决,使用str_wrap

代码语言:javascript
运行
复制
ig_plot + scale_x_discrete(label = function(x) str_wrap(x, width = 30)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))

用包装标签绘图

第二个情节更类似于我想要显示的内容。然而,它有太多的字符。我想包装标签,以便每个标签是2行30个字符,后面的椭圆代表多余的字符。

我尝试将str_truncstr_wrap合并到scale_x_discrete函数中,如下所示:

代码语言:javascript
运行
复制
ig_plot + scale_x_discrete(label = function(x) str_wrap(x, width = 30),
                                              str_trunc(x,60)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))

这不起作用,并生成错误:Error in str_trunc(x, 60) : object 'x' not found

我还尝试将其合并为单独的geom,但这只会导致截断:

代码语言:javascript
运行
复制
ig_plot + scale_x_discrete(label = function(x) str_wrap(x, width = 30)) +
  scale_x_discrete(label = function(x) str_trunc(x, width = 60)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))

有人能帮我写一个表达式,把它截短到60个字符,而在20个字符时断行吗?理想情况下使用stringr (尽管其他解决方案也很受欢迎!)。

ig_plot代码

代码语言:javascript
运行
复制
ig_plot <- ggplot(ig_protein_long, 
                  aes(x = Protein.names, 
                      y = Abundance,
                      fill = Sample)) +
  geom_col(position = "dodge2")

数据:

代码语言:javascript
运行
复制
Protein.names                                                                                                                                                    Protein.Names2 Sample        Abundance
   <chr>                                                                                                                                                            <chr>          <chr>             <dbl>
 1 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    2_1A            5864380
 2 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    2_1A_deglycos   4048260
 3 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    2_1D            5688230
 4 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    2_1D_deglycos   3701410
 5 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    AED5            8264160
 6 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    AED5_deglycos   7439780
 7 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    AI5             1189120
 8 Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE) IGHG1_HUMAN    AI5_deglycos    1179410
 9 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    2_1A             625329
10 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    2_1A_deglycos    717111
11 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    2_1D             592491
12 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    2_1D_deglycos    651356
13 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    AED5                 NA
14 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    AED5_deglycos    203275
15 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    AI5                  NA
16 Immunoglobulin heavy constant gamma 3 (HDC) (Heavy chain disease protein) (Ig gamma-3 chain C region)                                                            IGHG3_HUMAN    AI5_deglycos         NA
17 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    2_1A             957383
18 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    2_1A_deglycos    804135
19 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    2_1D             984904
20 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    2_1D_deglycos    645221
21 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    AED5            2239410
22 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    AED5_deglycos   2265830
23 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    AI5              283809
24 Immunoglobulin heavy constant gamma 4 (Ig gamma-4 chain C region)                                                                                                IGHG4_HUMAN    AI5_deglycos     176392
25 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     2_1A            1819170
26 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     2_1A_deglycos   1617100
27 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     2_1D            1904510
28 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     2_1D_deglycos   1260750
29 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     AED5            7667500
30 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     AED5_deglycos   7660800
31 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     AI5              366542
32 Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)                          IGHM_HUMAN     AI5_deglycos     494940
33 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    2_1A           38816100
34 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    2_1A_deglycos  25503900
35 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    2_1D           42940400
36 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    2_1D_deglycos  23146300
37 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    AED5          114771000
38 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    AED5_deglycos 105117000
39 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    AI5            56312200
40 Immunoglobulin heavy constant alpha 1 (Ig alpha-1 chain C region) (Ig alpha-1 chain C region BUR) (Ig alpha-1 chain C region TRO)                                IGHA1_HUMAN    AI5_deglycos   56323800
41 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    2_1A            6839840
42 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    2_1A_deglycos   3586850
43 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    2_1D            5939300
44 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    2_1D_deglycos   3094120
45 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    AED5           26295900
46 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    AED5_deglycos  26165000
47 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    AI5             6706120
48 Immunoglobulin heavy constant alpha 2 (Ig alpha-2 chain C region) (Ig alpha-2 chain C region BUT) (Ig alpha-2 chain C region LAN)                                IGHA2_HUMAN    AI5_deglycos    5510820
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 06:22:28

为了达到您想要的结果,将str_trunc封装在str_wrap中,如下所示:

代码语言:javascript
运行
复制
df <- data.frame(
  Protein.names = c(
    "Immunoglobulin heavy constant gamma 1 (Ig gamma-1 chain C region) (Ig gamma-1 chain C region EU) (Ig gamma-1 chain C region KOL) (Ig gamma-1 chain C region NIE)",
    "Immunoglobulin heavy constant mu (Ig mu chain C region) (Ig mu chain C region BOT) (Ig mu chain C region GAL) (Ig mu chain C region OU)"
  )
)

library(ggplot2)
library(stringr)

ggplot(df, aes(Protein.names)) +
  geom_bar() +
  scale_x_discrete(label = function(x) str_wrap(str_trunc(x, 60), width = 30)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))

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

https://stackoverflow.com/questions/73357399

复制
相关文章

相似问题

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