ggplot2绘图点的形状不够用怎么办?

news2024/11/15 11:34:51

群里有这么一个问题:

请问老师,fviz_pca_ind 做pca,当设置geom.ind = “point”,group>6时,就不能显示第7,8组的点,应该如何处理(在不设置为文本的情况下),只改变点的几何形状和颜色

fviz_pca_indfactoextra里面用来可视化PCA结果的一个参数,具体见PCA主成分分析实战和可视化 | 附R代码和测试数据。

这个问题是ggplot2绘制形状时的通用问题,默认只支持6种形状。我们生成个测试数据看下效果:

x <- 1:50
y <- dpois(x, lambda = 10)
data <- data.frame(X=x,y=y)
data$type <- as.factor(x)
library(ggplot2)

ggplot(data, aes(x=x, y=y)) + geom_point(aes(shape=type))

图效果如下。同时给出了一段提示:

Warning: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to discriminate; you have 50. Consider specifying shapes manually if you must have them.

Warning: Removed 44 rows containing missing values (geom_point).

就是说我们需要自己手动指定形状。

图片

ggplot2默认支持下面122种形状。

# 代码来自 http://sape.inf.usi.ch/quick-reference/ggplot2/shape
d=data.frame(p=c(0:25,32:127))
ggplot() +
scale_y_continuous(name="") +
scale_x_continuous(name="") +
scale_shape_identity() +
geom_point(data=d, mapping=aes(x=p%%16, y=p%/%16, shape=p), size=5, fill="red") +
  geom_text(data=d, mapping=aes(x=p%%16, y=p%/%16+0.25, label=p), size=3)

图片

那怎么利用起来呢?需要转换计算下能用的符号编号,这里选取0:14, 33-127  (15-25是其它形状加了颜色或变了大小,可能会对设置的大小或颜色属性有影响,先暂时忽略了; 32没看出来是什么形状)。

下面根据设定的符号列的因子数,通过取余数的方式获取这些数字,然后传递给scale_shape_manual函数。

shape_level <- nlevels(data[["type"]])
if (shape_level < 15){
  shapes = (0:shape_level) %% 15
} else{
  shapes = c(0:14,c((15:shape_level) %% 110 + 18))
}

ggplot(data, aes(x=x, y=y)) + 
  geom_point(aes(shape=type)) + 
  scale_shape_manual(values=shapes)

图片

回到上面的问题,因为没有给代码和数据,这里也就只能意思一下了。

# type 需要改成自己映射到形状的列名
shape_level <- length(levels(data[["type"]]))
if (shape_level < 15){
  shapes = (0:shape_level) %% 15
} else{
  shapes = c(0:14,c((15:shape_level) %% 110 + 18))
}

fviz_pca_ind(....) + scale_shape_manual(values=shapes)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何为IP申请SSL证书

目录 以下是如何轻松为IP地址申请SSL证书的详细步骤&#xff1a; 申请IP证书的基本条件&#xff1a; 申请IP SSL证书的方式&#xff1a; 确保网络通信安全的核心要素之一&#xff0c;是有效利用SSL证书来加密数据传输&#xff0c;特别是对于那些直接通过IP地址访问的资源。I…

部署Harbor镜像仓库并在k8s配置使用

文章目录 一、下载所需软件包1.docker-compose2.harbor 二、安装docker-compose1.安装docker2.配置docker-compose 三、安装harbor1.编辑harbor配置文件2.加载harbor配置&#xff08;重新加载配置文件&#xff0c;只要修改配置文件就需要执行&#xff09;3.开始安装harbor4.doc…

谷歌正在试行人脸识别办公室安全系统

内容提要&#xff1a; &#x1f9ff;据美国消费者新闻与商业频道 CNBC 获悉&#xff0c;谷歌正在为其企业园区安全测试面部追踪技术。 &#x1f9ff;测试最初在华盛顿州柯克兰的一间办公室进行。 &#x1f9ff;一份内部文件称&#xff0c;谷歌的安全和弹性服务 (GSRS) 团队将…

Windows版PostgreSQL数据库下载及安装教程(关系型数据库管理系统)

前言 PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统&#xff08;RDBMS&#xff09;。PostgreSQL最初设想于1986年&#xff0c;当时被叫做Berkley Postgres Project。该项目一直到1994年都处于演进和修改中&#xff0c;直到开发人员Andrew Yu和…

免费也能做高端!教育资源数据可视化,这款神器让你事半功倍

传统教育模式下&#xff0c;教育资源的分配、学生的学习进度、教师的教学质量等关键信息往往隐藏在海量的数据之中&#xff0c;难以被直观理解和有效利用。可视化技术为这些数据插上了翅膀&#xff0c;让它们以图表、图像、动画等形式跃然屏上&#xff0c;一目了然。 山海鲸可视…

云计算【第一阶段(27)】DHCP原理与配置以及FTP的介绍

一、DHCP工作原理 1.1、DHCP概念 动态主机配置协议 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff0c;该协议允许服务器向客户端动态分配 IP 地址和配置信息。 DHCP协议支持C/S&#xff08;客户端/服务器&#xff09;结构&…

telegram Bot 设置左下角的菜单按钮

我们在和BotFather对话的时候发现它的左下角有个菜单按钮&#xff0c;而且里面有很多命令&#xff0c;这个是怎么实现的了&#xff1f;接着往下看 也不知道CSDN是什么问题&#xff0c;关于telegram的几篇文章都没有审核通过&#xff0c;有想法了解更多的可以去我的博客南锋去看…

bdeaver mysql忘记localhost密码修改密码添加用户

描述 bdeaver可以连接当前的localhost数据库&#xff0c;但不知道数据库密码是什么。用这个再建一个用户&#xff0c;用来连接数据库 解决 1、在当前的数据库localhost右键&#xff0c;创建-用户 设置这个用户&#xff0c;密码 加权限 2、连接 用新的账号密码去连接&#x…

油烟监测仪:守护厨房,让蓝天白云成为常态

夏日炎炎&#xff0c;白天的酷暑让人们更加向往夜晚的凉爽与惬意。在这样的季节里&#xff0c;品尝各式烧烤、小龙虾&#xff0c;再搭配一杯冰镇啤酒&#xff0c;成为了许多市民夜晚消遣的不二选择。然而&#xff0c;随之而来的餐饮油烟问题也进入了高发阶段&#xff0c;对周边…

elastic job3 使用

​ 运维篇 运维平台地址&#xff1a;apache/shardingsphere-elasticjob: Distributed scheduled job (github.com)下载下来后&#xff0c;跑起 shardingsphere-elasticjob-lite-ui-frontend和shardingsphere-elasticjob-lite-ui-backend即可 原理片&#xff1a; 失效转移&am…

springboot在线智能助考系统-计算机毕业设计源码00068

摘要 随着人工智能技术的快速发展&#xff0c;智能辅助学习系统在教育领域日益受到重视。本研究旨在基于GPT构建在线智能助考系统&#xff0c;结合先进的自然语言处理技术&#xff0c;为用户提供智能问答、模拟考试、资源分享、交流论坛等功能&#xff0c;旨在提升用户学习效率…

【简历】湖南某一本大学:JAVA实习简历指导,面试通过率比较低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这个同学的学校是重点一本院校&#xff0c;这种学校背景我们建议大家尝试投一下大厂&#xff0c;然后投递主体在中厂。但是因为项目经历…

MICCAI 2024 每日一篇论文 纯纯直读 CUTS:用于多粒度无监督医学图像分割的深度学习和拓扑框架

MICCAI 2024 CUTS: A Deep Learning and Topological Framework for Multigranular Unsupervised Medical Image Segmentation CUTS: 用于多粒度无监督医学图像分割的深度学习和拓扑框架 作者 陈璐1*、Matthew Amodio1*、梁博伦.沈2、冯高3、阿曼阿维斯塔4、Sanjay Aneja3,5…

逻辑回归模型(非回归问题,而是解决二分类问题)

目录&#xff1a; 一、Sigmoid激活函数&#xff1a;二、逻辑回归介绍&#xff1a;三、决策边界四、逻辑回归模型训练过程&#xff1a;1.训练目标&#xff1a;2.梯度下降调整参数&#xff1a; 一、Sigmoid激活函数&#xff1a; Sigmoid函数是构建逻辑回归模型的重要激活函数&am…

codesys多段直线电机跨电机控制

1. 电机描述 在X轴上有多段直线电机&#xff0c;如下图有9个&#xff0c;从X1到X9. 2.codesys程序结构 程序名称&#xff1a;Pou_two_motors 动作名称&#xff1a;ACT_move 把这个程序搞到任务配置里面 通过ethercat总线命名一下这些电机&#xff0c;方便调用。 3.程序内容 P…

Xilinx FPGA:vivado关于IIC的一些零碎知识点

一、简介 IlC(inter-Integrated circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信&#xff0c;在小数据量场合使用&#xff0c;传输距离短&#xff0c;任意时刻只能有一个主机等特性…

vue实例和容器的一夫一制——04

//准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp2> <h1>{{name}}</h1> </div> <script> // 验…

14-54 剑和诗人28 - 用于实时嵌入查找的向量检索

介绍 LLM 成功的关键因素是向量嵌入的使用。通过将文本转换为数字向量表示&#xff0c;我们可以将语义含义映射到数学向量空间。这使得模型能够根据向量之间的相似性在语言中概括模式。 随着我们的模型和数据集变得越来越大&#xff0c;高效地存储、组织和检索这些嵌入变得至关…

【工具分享】零零信安——攻击面管理平台

文章目录 00SEC-ASM™功能介绍功能演示 最近闲来无事&#xff0c;到处网上冲浪&#xff0c;无意间发现了长亭云图攻击面管理平台&#xff0c;无奈需要授权才能使用&#xff0c;于是就找到了平替&#xff1a;零零信安攻击面管理平台。 长亭云图攻击面管理平台&#xff1a;https:…

Langchain Chatchat:开源代码与离线部署的完美融合

写在前面 一.好易智算介绍 1.官网网址 好易智算官网 好易智算共有算力市场、应用市场、交流社区三大功能模式。 2.应用市场 好易智算的应用市场提供了包含 Stable Diffusion WebUI、SadTalker、ComfyUI、Facefusion、Langchain Chatchat、Musetalk、Wav2lip、Fooocus、lora…