首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ggplot2:使用geom_point(),但并非所有字符标签都绘制在X轴上

ggplot2:使用geom_point(),但并非所有字符标签都绘制在X轴上
EN

Stack Overflow用户
提问于 2021-10-19 18:44:46
回答 1查看 59关注 0票数 0

我正在尝试使用R中的ggplot2 geom_point调用来绘制图形。但是,当我绘制所需的图形时,作为单词(而不是数字)的X标签并不都显示在X轴上。

首先,这里有一些可重现的数据:

代码语言:javascript
运行
AI代码解释
复制
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。按照那里的说明,我按照建议的代码添加了一个具有单个级别的因子:

代码语言:javascript
运行
AI代码解释
复制
Bac$logFC <- factor(Bac$logFC, levels = unique(Bac$logFC))
Bac$ASV_Fam <- factor(Bac$ASV_Fam, levels = unique(Bac$ASV_Fam))

作图:

代码语言:javascript
运行
AI代码解释
复制
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个点,并且只有一个标签与该垂直线相关联。请参见X轴标签示例:ASV_152; ReyranellaceaeASV_102; HymenobacteraceaeASV_266; Chthoniobacteraceae等。

我不确定为什么不给它们单独的X轴标签,而是在同一条垂直线上绘制,从而减少在X轴上绘制的总标签。

我尝试过的其他解决方法是:通过pdf()命令加宽pdf,通过传递coord_fixed(ratio = 0.25)加宽图形,但这些选项都不起作用。

另外,传递下面的代码scale_y_discrete(breaks = seq(-1, 4, 0.5))让我不能让那么多数字在Y轴上显示不起作用。我认为这是因为y轴被设置为一个因子,所以我试图保持它的数值,但这也不起作用。

任何关于正在发生的事情的线索都将是非常有用的!

作为参考,下面是我的会话sessionInfo()的输出

代码语言:javascript
运行
AI代码解释
复制
R version 4.1.1 (2021-08-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 11.6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 18:53:34

当您选中dim(table(Bac$Family))时,Family中存在14唯一值,而当您通过x = Family设置绘图的x轴时,只有14个值存在。

我不确定您的用途,但如果您想要x轴上的所有24个标注(ASV_Fam),每个标注一个点,而不是x = Family,请尝试x = ASV_Fam

如果这个图不是你想要的,请告诉我。

代码语言:javascript
运行
AI代码解释
复制
ggplot(Bac, aes(x = ASV_Fam, y = logFC, color = Phylum)) + geom_point() +
  theme(axis.text.x = element_text(colour = "black", size = 9, angle = -90)) 

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

https://stackoverflow.com/questions/69639727

复制
相关文章
php导出excel表格_phpspreadsheet导出
单个sheet页Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。Excel2003的最大列数是256列,2007以上版本是16384列。
全栈程序员站长
2022/09/30
24.3K1
php导出excel表格_phpspreadsheet导出
PhpSpreadsheet_php获取表单数据
在利用php读取Excel时,当前(2019年)流行的做法是利用composer安装PhpSpreadsheet(composer require phpoffice/phpspreadsheet)来操作,示例代码如下:
全栈程序员站长
2022/10/05
1.9K0
PhpSpreadsheet(PHPExcel)的使用 —— 生成/读取excel
PHPExcel已经不再维护,PhpSpreadsheet是PHPExcel的下一个版本
崔哥
2022/05/25
1.4K0
PhpSpreadsheet_php file_put_contents
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
4670
EXCEL公式使用
表示内容如果包含√,则为真,为红色 表示内容开头为低,则为真 表示选中全部
诺谦
2022/05/10
5440
EXCEL公式使用
PhpOffice/PhpSpreadsheet读取和写入Excel
PhpSpreadsheet是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel(PHPExcel已不再维护)。使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作。
程序猿的栖息地
2022/04/29
6.5K0
excel查找结果导出_excel数据怎么导出
由于PHPExcel早就停止更新维护,所以适用phpspreadsheet。不知道如何通过composer拉取项目包的同学,可以查看Composer学习一文。引入方法:
全栈程序员站长
2022/09/30
3.5K0
phpspreadsheet使用实例_php获取html中文本框内容
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
2.3K0
PhpSpreadsheet读取excel「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
1.5K0
PhpSpreadsheet读取excel「建议收藏」
使用PHP导出数据到Excel
PHP操作Excel主要有两个第三方库,一个是PHPExcel,另外一个是PhpSpreadsheet。其中PhpSpreadsheet是PHPExcel的升级版本。
gglinux
2019/04/08
2.6K0
Excel公式技巧18: 使用公式排序
Excel提供了排序功能,可以方便地对选中的列表进行排序。本文给出一个基于公式的排序解决方案,将指定区域内的数据按字母顺序排序。
fanjy
2020/03/12
2.1K0
Thinkphp使用PhpSpreadsheet导入&导出Excel(适用各种Excel操作场景)
最近公司要做报表功能,各种财务报表、工资报表、考勤报表等,复杂程度让人头大,于是特地封装适用各大场景的导入&导出操作,希望各界大神支出不足之处,以便小弟继续完善。
程序猿的栖息地
2022/04/29
3.6K0
PhpSpreadsheet读取excel【包含图片】
composer require phpoffice/phpspreadsheet=1.8.2
黄啊码
2020/05/29
1.6K0
PhpSpreadsheet读取excel【包含图片】
phpspreadsheet 读取 Excel 表格问题
要读取大量数据,需要 ReadFilter,指定读取范围,下面是我的 ReadFilter 类
全栈程序员站长
2022/09/30
2.7K0
phpspreadsheet 读取 Excel 表格问题
Excel公式技巧24: Excel公式中的降维技术
看过前面一系列文章的朋友,一定会熟悉“重新定义数组维度”的概念。这是一项非常有用且非常重要的技术,使我们可以接受二维数组并将其转换为一维数组,同时将元素保留在该数组中。
fanjy
2020/03/25
2.1K0
Excel公式技巧24: Excel公式中的降维技术
PhpSpreadsheet_phpquery手册
官网文档:https://phpspreadsheet.readthedocs.io/en/stable/
全栈程序员站长
2022/09/30
5890
PhpSpreadsheet_phpquery手册
国产化替代方案_excel表格为什么替换不了
PHPExcel上一版本1.8.1于2015年发布。该项目已不再维护,可以使用,但是不建议再使用。所有用户都应该迁移到其直接后继者PhpSpreadsheet或其他替代方案。PhpSpreadsheet打破了兼容性,大大提高了代码库质量(命名空间,PSR合规性,最新PHP语言功能的使用等)。
全栈程序员站长
2022/11/04
1.7K0
国产化替代方案_excel表格为什么替换不了
php Spreadsheet Csv,使用 PhpSpreadsheet 实现读取写入 Execl「建议收藏」
这两天需要做一个支持读写微软办公软件的功能模块.最底下会说下自己下一步的想法,我先找了PhpSpreadheet这个第三方的扩展包,功能很完善,是一个纯PHP编写的库,看了官方文档,目前支持XLS,XML,XLSX,ODS,SLK,Gnumeric,CSV以及HTML.
全栈程序员站长
2022/09/29
3.3K0
php Spreadsheet Csv,使用 PhpSpreadsheet 实现读取写入 Execl「建议收藏」
点击加载更多

相似问题

我可以在Countif公式的criteria部分使用变量吗?

10

有没有一种方法可以快速更新列公式?

10

InputBox变量在Countif公式中未被识别

20

有没有一种使用迭代创建变量的方法?

10

包含countif的变量列导致公式解析错误

116
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文