我在柱状图上的轴标签太长了。最初,我通过stringr解决了这个问题,这要感谢狄比森对一个现存问题的解决,它允许我使用以下代码截断标签:
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
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_trunc和str_wrap合并到scale_x_discrete函数中,如下所示:
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,但这只会导致截断:
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代码
ig_plot <- ggplot(ig_protein_long,
aes(x = Protein.names,
y = Abundance,
fill = Sample)) +
geom_col(position = "dodge2")数据:
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发布于 2022-08-15 06:22:28
为了达到您想要的结果,将str_trunc封装在str_wrap中,如下所示:
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))

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