我正在尝试使用ggplot2
geom_point
in 中的调用绘制图表R
。但是,当我绘制所需的图表时,我的作为单词(不是数字)的 X 标签不会全部显示在 X 轴上。
首先,这里有一些可重现的数据:
Bac <- data.frame(logFC = seq(-1, 3.5, 0.19),
ASV_Fam = c("ASV_31; Bdellovibrionaceae", "ASV_152; Reyranellaceae", "ASV_102; Hymenobacteraceae", "ASV_124; Nitrospiraceae", "ASV_141; NA",
"ASV_180; Microscillaceae", "ASV_259; Microscillaceae", "ASV_272; Chitinophagaceae", "ASV_79; Chthoniobacteraceae",
"ASV_266; Chthoniobacteraceae", "ASV_106; Nitrosomonadaceae", "ASV_121; Nitrospiraceae", "ASV_184; Methylophilaceae", "ASV_115; Chthoniobacteraceae",
"ASV_123; Nitrosomonadaceae", "ASV_143; Haliangiaceae", "ASV_139; NA", "ASV_159; Micrococcaceae", "ASV_185; Xanthobacteraceae", "ASV_227; Chitinophagaceae",
"ASV_233; NA", "ASV_239; Chitinophagaceae", "ASV_255; NA", "ASV_204; Longimicrobiaceae"),
Phylum = c("Bdellovibrionota", "Proteobacteria", "Bacteroidota", "Nitrospirota",
"Proteobacteria", "Bacteroidota", "Bacteroidota", "Bacteroidota",
"Verrucomicrobiota", "Verrucomicrobiota", "Proteobacteria", "Nitrospirota",
"Proteobacteria", "Verrucomicrobiota", "Proteobacteria", "Myxococcota",
"Proteobacteria", "Actinobacteriota", "Proteobacteria", "Bacteroidota",
"Proteobacteria", "Bacteroidota", "Cyanobacteria","Gemmatimonadota"))
Bac$Family <- gsub("^[^.]*;", "", Bac$ASV_Fam)
我发现最接近我的错误的是这篇文章:Unable to plot points from a data.frame。按照那里的说明,我按照建议的代码添加了一个单一级别的因素:
Bac$logFC <- factor(Bac$logFC, levels = unique(Bac$logFC))
Bac$ASV_Fam <- factor(Bac$ASV_Fam, levels = unique(Bac$ASV_Fam))
绘图:
ggplot(Bac, aes(x = Family, y = logFC, color = Phylum)) + geom_point() +
scale_x_discrete(labels = toShow$ASV_Fam) + theme(axis.text.x = element_text(colour = "black", size = 9, angle = -90))
但是,这仍然没有绘制我需要查看的所有 X 标签。这是我得到的图表:
如您所见,它只绘制了我为 X 轴传递的 24 个标签中的 14 个。我的所有点都在那里,但一些垂直线显示超过 1 个点,并且只有 1 个标签与该垂直线相关联。参见例如 X 轴标签:ASV_152; Reyranellaceae
、ASV_102; Hymenobacteraceae
、ASV_266; Chthoniobacteraceae
等。
我不确定为什么这些没有给出单独的 X 轴标签,而是绘制在同一条垂直线上,从而减少了绘制在 X 轴上的总标签。
我尝试过的其他解决方法:通过pdf()
命令扩大 pdf,通过传递扩大图形coord_fixed(ratio = 0.25)
,但这些选项都不起作用。
此外,传递以下代码scale_y_discrete(breaks = seq(-1, 4, 0.5))
使我不能在 Y 轴上显示这么多数字是行不通的。我认为这是因为 y 轴已被设置为一个因素,所以我试图将其保持为数字,但这也不起作用。
任何有关正在发生的事情的线索都会非常有帮助!
作为参考,这是我的会话的输出sessionInfo()
R version 4.1.1 (2021-08-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 11.6