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

群里有这么一个问题:

请问老师,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.mzph.cn/bicheng/43346.shtml

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

相关文章

go-ext-sm2国密PHP扩展 密文指定排序、识别ans1编码等功能

go-ext-sm2 介绍 基于go-gmsm静态库编写的SM2椭圆曲线公钥密码算法PHP扩展 相较于openssl-ext-sm2编译更方便 增加了密文指定排序、识别ans1编码等功能 特性&#xff1a;非对称加密 git地址&#xff1a;https://gitee.com/state-secret-series/go-ext-sm2.git 软件架构 z…

该让医疗垂类大模型,走出“试题”了

图源&#xff1a;123rf “现阶段&#xff0c;许多医疗垂类大模型就是伪命题&#xff0c;推理能力不行。” 一位观望大模型已久的医疗从业者玄彬&#xff08;化名&#xff09;发出了极为尖锐的批评。 在他看来&#xff0c;目前人工智能是靠scaling law涌现的&#xff0c;模型性…

【Icon】矢量图、小图标、logo、资源网站,免费获取

要获取汽车和轮船的UI小图标、矢量图,可以访问以下一些网站,这些网站提供了丰富的图标和矢量图资源,适用于各种设计需求: 1. Flaticon 网站地址:https://www.flaticon.com/ 特点:Flaticon是一个与FreePik同一家公司的网站,专门为设计师找寻免费素材。它提供了大量高质…

【前端】使用chrom浏览器Network,查看前后台数据传输请求

使用chrom浏览器Network查看前后台数据传输请求 写在最前面查看前后台数据传输请求① 首先&#xff0c;打开开发者工具&#xff08;F12&#xff09;打开控制台&#xff0c;切换到Network面板。Network面板右键界面copy ②清空请求log ctrle两次或者点击clear图标 案例展示&…

鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs (上)

一、自定义组件 1、自定义组件 自定义组件&#xff0c;最基础的结构如下&#xff1a; Component struct Header {build() {} } 提取头部标题部分的代码&#xff0c;写成自定义组件。 1、新建ArkTs文件&#xff0c;把Header内容写好。 2、在需要用到的地方&#xff0c;导入…

html——VSCode的使用

快捷键 快速生成标签&#xff1a;标签名tab 保存文件&#xff1a;CtrlS 设置自动保存【文件】→【自动保存】 快速查看网页效果&#xff1a;右击→Open in Default Browser 快捷键&#xff1a;altb 注意&#xff1a;必须安装了open in brows…

转载!abap代码规范

01、在增强里面禁止显式或者隐式提交(ZILOG所在函数如果用在增强里面&#xff0c;不要COMMIT) 02、WAIT、异步RFC&#xff0c;都会触发隐式提交&#xff0c;所以禁止在增强内以及禁止提交的场合使用 03、FOR ALL ENTRIES一定要判断内表是否为空且尽量删除重复&#xff0c;SEL…

软考高级第四版备考--第13天(规划资源管理)Plan Resoure Management

定义&#xff1a;定义如何估算、获取、管理和利用团队以及实物资源的过程。 作用&#xff1a;根据项目类型和复杂程度确定适用与项目资源的管理方法和管理程度 输入&#xff1a;项目章程、项目管理计划&#xff08;质量管理计划、范围基准&#xff09;、项目文件&#xff08;…

域渗透与横向渗透:获取域控制器最高权限的技术与策略

域渗透与横向渗透&#xff1a;获取域控制器最高权限的技术与策略 引言 域控制器是组织网络中的核心组件&#xff0c;负责管理用户账户、安全策略和网络资源访问。横向渗透是攻击者在内网中移动并控制更多系统的过程。获取域控制器的最高权限意味着攻击者可以对整个网络进行操…

windows10下的游戏怎么卸载?

在Windows 10中卸载游戏可以通过多种途径进行&#xff0c;下面是一些常见的方法&#xff1a; 方法一&#xff1a;通过“设置”应用卸载 1. 点击左下角的“开始”按钮&#xff0c;打开“开始”菜单。 2. 选择“设置”图标&#xff08;齿轮形状&#xff09;。 3. 在“设置”窗…

2024年5款最佳免费博客程序——对比和测评

多年来&#xff0c;我试用了许多不同的博客网站&#xff0c;并评估了它们在各种需求上的表现。这篇文章记录了我的发现&#xff08;截至2024年&#xff09;&#xff0c;旨在帮助您为您的项目选择最佳解决方案。 我将介绍五个非常优秀的博客平台&#xff0c;它们让您能够轻松创建…

QTreeWidget 树遍历

在项目中遇到一个问题&#xff1a;需要将QString路径&#xff0c;做成一棵树的样式展示出来。其实倒不是说是问题&#xff0c;只是记录写这块儿的代码的思路 前提&#xff1a;我的所有的QString都是用"/"进行分割的&#xff0c;分割后的list中第一个元素是公共的路径…

知识改变命运 第二集:Java的数据类型与变量

数据类型与变量 1. 字面常量2. 数据类型3. 变量3.1 变量概念3.2 语法格式3.3 整型变量3.3.1 整型变量3.3.2 长整型变量3.3.3 短整型变量3.3.4 字节型变量 3.4 浮点型变量3.4.1 双精度浮点型3.4.2 单精度浮点型 3.5 字符型变量3.6 布尔型变量3.7 类型转换3.7.1 自动类型转换(隐式…

mybatilsplaus 常用注解

官网地址 baomidou注解配置

CATIA二次开发VBA入门(5)——catia文档操作vb.net程序案例,打开catia文件,进行视图操作,退出程序

目录 引出catia文档操作案例1.初始化窗体&#xff0c;始终置顶始终置顶方式2 2.打开文件3.视图切换4.退出5.完整代码 总结认识CATIA二次开发刘瑞欣 vb程序设计教程Excel中的vba开发catia中的vba开发 宏的录制、回放和编辑宏代码精简画圆柱阵列宏Macro文件的3种类型宏的保存&…

CSS 指南

CSS 指南 引言 CSS(层叠样式表)是网页设计和开发中不可或缺的一部分。它用于控制网页的布局和样式,使网页更加美观和易于浏览。本指南将为您提供CSS的基础知识,包括选择器、属性、值以及如何将CSS应用于HTML元素。 CSS基础 选择器 选择器是CSS中用于选择HTML元素的部分…

如何安全隐藏IP地址,防止网络攻击?

当您想在互联网上保持隐私或匿名时&#xff0c;您应该做的第一件事就是隐藏您的 IP 地址。您的 IP 地址很容易被追踪到您&#xff0c;并被用来了解您的位置。下面的文章将教您如何隐藏自己&#xff0c;不让任何试图跟踪您的活动的人发现。 什么是 IP 地址&#xff1f; 首先&am…

Apache Flink核心特性应用场景

Flink的定义 Apache Flink是一个分布式处理引擎&#xff0c;用于处理 无边界数据流&#xff0c; 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算如下Flink官网的一张图 Flink 与Spark的区别 Flink 中处…

keep-alive缓存组件

keep-alive缓存组件是Vue.js中的一个特殊组件&#xff0c;主要用于缓存内部组件的数据状态&#xff0c;以提高应用的性能和用户体验。以下是关于keep-alive缓存组件的详细解析&#xff1a; 一、作用 缓存组件状态&#xff1a;当组件在<keep-alive>内部切换时&#xff0…

白盒测试的概念、特点、应用阶段、实施流程、现状与前景

文章目录 前言一、白盒测试的应用阶段二、白盒测试的特点三、白盒测试的流程四、白盒测试的现状与前景总结 前言 白盒测试&#xff08;White Box Testing&#xff09;&#xff0c;又称为结构测试&#xff08;Structural Testing&#xff09;、透明盒测试&#xff08;Glass Box…