更改冲积图中字符的字体大小

发布于 2025-01-17 15:52:35 字数 3381 浏览 7 评论 0原文

我试图解决这个问题已经有一段时间了,但似乎没有代码在这里工作。我对 R 没有那么丰富的经验,所以也许我的问题很容易解决。以下代码应呈现一个冲积图,它将蜂巢与某些树连接起来。唯一不起作用的是两个站点上物种的字体大小,这样它们就不会重叠。

我尝试过 ggplot + theme(text=element_text(size=...); 还有 theme(axis.text.x=element_text(size=...)或者在下面显示的每个命令中添加 size=... 字体大小是否与“stratum”统计相关

ggplot(data = trees,
aes(axis1 = trees$Bee_species, axis2 = trees$Tree_species, y = trees$obs)) +
geom_alluvium(aes(fill = trees$Bee_species)) +
geom_stratum(width=0.50) +
geom_text(stat = "stratum", aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Bee_species", "Tree_species"),
expand = c(0.40, 0.40))+
theme_void()+
theme(legend.position = "none") +
scale_fill_manual(values = c("purple", "green", "blue", "red", "turquoise", "yellow"))

dput(trees)
structure(list(Bee_species = c("Apis_mellifera", "Lestrimelitta_sp", 
"Lestrimelitta_sp", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Tetragonisca_angustula", "Tetragonisca_angustula", 
"Tetragonisca_angustula", "Tetragonisca_angustula", "Tetragonisca_angustula", 
"Tetragonisca_angustula", "Tetragonisca_angustula", "Trigona_corvina", 
"Trigona_corvina", "Trigona_corvina", "Trigona_corvina", "Trigona_corvina"
), Tree_species = c("tronco_muerto", "Ficus_jimenesii", "Spathodea_campanulata", 
"Bambusa_vulgaris", "Cedrela_odorata", "Cojoba_arborea", "Cordia_eriostigma", 
"Cupania_glabra", "Cupressus_lusitanica", "Elaeis_guineensis", 
"Eucalyptus_sp", "Ficus_jimenesii", "Jacaranda_mimosifolia", 
"Lagerstroemia_speciosa", "Phellodendron_sp", "Roystonea_regia", 
"Spathodea_campanulata", "Tabebuia_rosea", "tronco_muerto", "Casuarina_equisetifolia", 
"Cordia_eriostigma", "Cupressus_lusitanica", "Erythrina_poeppigiana", 
"Ficus_costaricana", "Ficus_jimenesii", "Mangifera_indica", "tronco_muerto", 
"Conifera", "Cupressus_lusitanica", "Ficus_costaricana", "Ficus_elastica", 
"Ficus_jimenesii", "Spathodea_campanulata", "Tapirira_mexicana", 
"Bambusa_vulgaris", "Citharexylum_sp", "Cupressus_sp", "Ficus_costaricana", 
"Ficus_jimenesii"), obs = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 4L, 
1L, 1L, 8L, 1L, 1L, 3L, 2L, 5L, 2L, 3L, 1L, 1L, 2L, 1L, 2L, 3L, 
1L, 1L, 1L, 1L, 1L, 1L, 5L, 1L, 1L, 1L, 1L, 1L, 1L, 2L)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -39L), groups = structure(list(
    Bee_species = c("Apis_mellifera", "Lestrimelitta_sp", "Partamona_orizabaensis", 
    "Scaptotrigona_subobscuripennis", "Tetragonisca_angustula", 
    "Trigona_corvina"), .rows = structure(list(1L, 2:3, 4:19, 
        20:27, 28:34, 35:39), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L), .drop = TRUE))

I'm trying to fix this issue for quite some time now and no code seems to work here. I'm not that experienced in R, so maybe my problem is easy to fix. The following code shall present an Alluvial plot which links Bee nests to certain Trees. The only thing that won't work is the fontsize of the Species on both sites, so that they will not overlap.

I´ve tried ggplot + theme(text=element_text(size=...); also theme(axis.text.x=element_text(size=...) or add size=... in every command shown below. Is the fontsize connected to the "stratum" stat?

ggplot(data = trees,
aes(axis1 = trees$Bee_species, axis2 = trees$Tree_species, y = trees$obs)) +
geom_alluvium(aes(fill = trees$Bee_species)) +
geom_stratum(width=0.50) +
geom_text(stat = "stratum", aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Bee_species", "Tree_species"),
expand = c(0.40, 0.40))+
theme_void()+
theme(legend.position = "none") +
scale_fill_manual(values = c("purple", "green", "blue", "red", "turquoise", "yellow"))

Here the table:

dput(trees)
structure(list(Bee_species = c("Apis_mellifera", "Lestrimelitta_sp", 
"Lestrimelitta_sp", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Partamona_orizabaensis", 
"Partamona_orizabaensis", "Partamona_orizabaensis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Scaptotrigona_subobscuripennis", 
"Scaptotrigona_subobscuripennis", "Tetragonisca_angustula", "Tetragonisca_angustula", 
"Tetragonisca_angustula", "Tetragonisca_angustula", "Tetragonisca_angustula", 
"Tetragonisca_angustula", "Tetragonisca_angustula", "Trigona_corvina", 
"Trigona_corvina", "Trigona_corvina", "Trigona_corvina", "Trigona_corvina"
), Tree_species = c("tronco_muerto", "Ficus_jimenesii", "Spathodea_campanulata", 
"Bambusa_vulgaris", "Cedrela_odorata", "Cojoba_arborea", "Cordia_eriostigma", 
"Cupania_glabra", "Cupressus_lusitanica", "Elaeis_guineensis", 
"Eucalyptus_sp", "Ficus_jimenesii", "Jacaranda_mimosifolia", 
"Lagerstroemia_speciosa", "Phellodendron_sp", "Roystonea_regia", 
"Spathodea_campanulata", "Tabebuia_rosea", "tronco_muerto", "Casuarina_equisetifolia", 
"Cordia_eriostigma", "Cupressus_lusitanica", "Erythrina_poeppigiana", 
"Ficus_costaricana", "Ficus_jimenesii", "Mangifera_indica", "tronco_muerto", 
"Conifera", "Cupressus_lusitanica", "Ficus_costaricana", "Ficus_elastica", 
"Ficus_jimenesii", "Spathodea_campanulata", "Tapirira_mexicana", 
"Bambusa_vulgaris", "Citharexylum_sp", "Cupressus_sp", "Ficus_costaricana", 
"Ficus_jimenesii"), obs = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 4L, 
1L, 1L, 8L, 1L, 1L, 3L, 2L, 5L, 2L, 3L, 1L, 1L, 2L, 1L, 2L, 3L, 
1L, 1L, 1L, 1L, 1L, 1L, 5L, 1L, 1L, 1L, 1L, 1L, 1L, 2L)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -39L), groups = structure(list(
    Bee_species = c("Apis_mellifera", "Lestrimelitta_sp", "Partamona_orizabaensis", 
    "Scaptotrigona_subobscuripennis", "Tetragonisca_angustula", 
    "Trigona_corvina"), .rows = structure(list(1L, 2:3, 4:19, 
        20:27, 28:34, 35:39), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L), .drop = TRUE))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好多鱼好多余 2025-01-24 15:52:35

不确定这是否是您想要的,但是使用 geom_text 中的 size 参数我们可以更改字体大小。

library(ggplot2)
library(ggalluvial)

ggplot(data = trees,
       aes(axis1 = trees$Bee_species, axis2 = trees$Tree_species, y = trees$obs)) +
  geom_alluvium(aes(fill = trees$Bee_species)) +
  geom_stratum(width=0.50) +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size= 2.5) +
  scale_x_discrete(limits = c("Bee_species", "Tree_species"),
                   expand = c(0.40, 0.40))+
  theme_void()+
  theme(legend.position = "none") +
  scale_fill_manual(values = c("purple", "green", "blue", "red", "turquoise", "yellow"))

a

Not sure if this is what you're after, but using size argument within geom_text we can change the font size.

library(ggplot2)
library(ggalluvial)

ggplot(data = trees,
       aes(axis1 = trees$Bee_species, axis2 = trees$Tree_species, y = trees$obs)) +
  geom_alluvium(aes(fill = trees$Bee_species)) +
  geom_stratum(width=0.50) +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size= 2.5) +
  scale_x_discrete(limits = c("Bee_species", "Tree_species"),
                   expand = c(0.40, 0.40))+
  theme_void()+
  theme(legend.position = "none") +
  scale_fill_manual(values = c("purple", "green", "blue", "red", "turquoise", "yellow"))

a

恍梦境° 2025-01-24 15:52:35

您也可以使用geom_label()代替geom_text()来调整字体大小。

示例代码:

library(ggplot2)
library(ggalluvial)
library(ggthemes)


ggplot(trees,aes(axis1 = Bee_species, axis2 = Tree_species, y = obs)) +
        geom_alluvium(aes(fill = Bee_species, color = Tree_species), width = 6/16, knot.pos = 0.3, alpha = 0.5) +
        geom_stratum(width = 6/16, , alpha = 0.5,  color = "black") +
        geom_label(stat = "stratum", aes(label=after_stat(stratum)), fontface = "bold", size = 3) +
  scale_x_discrete(limits = c("Bee species", "Tree species"),expand = c(0.01, 0.01))+
  scale_y_continuous(breaks = NULL)+
  scale_fill_viridis_d() +
  scale_color_viridis_d() +
  theme_hc() +
  theme(axis.text.x = element_text(hjust = 1, face="bold", size=12, color="black"), 
        axis.title.x = element_text(face="bold", size=16, color="black"),
        axis.text.y = element_text(face="bold", size=12, color="black"),
        axis.title.y = element_blank(),
        strip.text = element_text(size=10, face="bold"),
        plot.title = element_text(size=20, face="bold"),
        legend.position = "none")

绘图:
输入图片此处描述

Also you could use geom_label() insted of geom_text() to adjust font size.

Sample code:

library(ggplot2)
library(ggalluvial)
library(ggthemes)


ggplot(trees,aes(axis1 = Bee_species, axis2 = Tree_species, y = obs)) +
        geom_alluvium(aes(fill = Bee_species, color = Tree_species), width = 6/16, knot.pos = 0.3, alpha = 0.5) +
        geom_stratum(width = 6/16, , alpha = 0.5,  color = "black") +
        geom_label(stat = "stratum", aes(label=after_stat(stratum)), fontface = "bold", size = 3) +
  scale_x_discrete(limits = c("Bee species", "Tree species"),expand = c(0.01, 0.01))+
  scale_y_continuous(breaks = NULL)+
  scale_fill_viridis_d() +
  scale_color_viridis_d() +
  theme_hc() +
  theme(axis.text.x = element_text(hjust = 1, face="bold", size=12, color="black"), 
        axis.title.x = element_text(face="bold", size=16, color="black"),
        axis.text.y = element_text(face="bold", size=12, color="black"),
        axis.title.y = element_blank(),
        strip.text = element_text(size=10, face="bold"),
        plot.title = element_text(size=20, face="bold"),
        legend.position = "none")

Plot:
enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文