首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R按系数手动设置形状

R按系数手动设置形状
EN

Stack Overflow用户
提问于 2014-10-06 14:03:50
回答 2查看 15K关注 0票数 11

前几天我问了这个问题,但是没有人能想象我的问题,所以我举了个例子。

代码语言:javascript
运行
AI代码解释
复制
A <- c('a','b', 'c','d','e')
types <- factor(A)
B <- c(1,2,3,4,5)
C <- c(6,7,8,9,10)
D <- c(1,2,1,2,3)
ABC <- data.frame(B,C,D,types)

library(ggplot2)

ggplot(ABC, aes(x=B ,y=C ,size=D, colour=as.factor(types),label=types, shape=as.factor(types))) +
geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) +
scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000))  +
scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ scale_y_continuous(lim=c(0,30000000)) +
scale_shape_manual(values=c(15,18,16,17,19))`

绘制这个图,你会发现有a-e因子,它们有颜色和形状。

在我的代码中,我使用scale_shape_manual来设置形状,它们是按顺序定义的,即因子的顺序是a,b,c,d,e,我的值是15,18,16,17,19,所以a=15 (正方形),b=18等

我想按因子设置这些形状。我的数据每天都在变化,因素的顺序也不同,但我总是希望相同的因素具有相同的形状。

所以很明显,这段代码不能工作,但类似于:

scale_shape_manual(values=('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19))

如果我也能对颜色做同样的事情,那将会很有帮助。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-06 15:20:15

如果我没有理解错的话,总会有(最多)五个类别"a“- "e",并且您希望这些类别的形状和颜色在数据集中保持一致。这里有一种方法(注意:gg_color_hue(...)来自here):

代码语言:javascript
运行
AI代码解释
复制
# set up shapes
shapes <- c(15,18,16,17,19)
names(shapes) <- letters[1:5]

# set up colors
gg_color_hue <- function(n) { # ggplot default colors
  hues = seq(15, 375, length=n+1)
  hcl(h=hues, l=65, c=100)[1:n]
}
colors <- gg_color_hue(5)
names(colors) <- names(shapes)

# original data
ggplot(ABC, aes(x=B ,y=C ,size=D, colour=types,label=types, shape=types)) +
  geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) +
  scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000))  +
  scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ 
  scale_y_continuous(lim=c(0,30000000)) +
  scale_shape_manual(values=shapes) + scale_color_manual(values=colors)

代码语言:javascript
运行
AI代码解释
复制
#new data
DEF <- data.frame(B,C,D,types=factor(c("a","a","a","d","e")))
ggplot(DEF, aes(x=B ,y=C ,size=D, colour=types,label=types, shape=types)) +
  geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) +
  scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000))  +
  scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ 
  scale_y_continuous(lim=c(0,30000000)) +
  scale_shape_manual(values=shapes) + scale_color_manual(values=colors)

票数 7
EN

Stack Overflow用户

发布于 2020-09-15 18:48:58

我确信这不再与OP相关,但我找到的这个问题的最佳解决方案比目前发布的更简单,而且几乎写入了问题本身。

操作员希望使用以下内容指定手动定义的形状或颜色

"scale_shape_manual(values=('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19))

只需要将赋值作为向量传递,

scale_shape_manual(values = c('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19))

如果你想要自动生成的颜色,jlhoward的答案会更好。而我在下面提供的脚本只需要更少的代码行。用户选择。

代码语言:javascript
运行
AI代码解释
复制
A <- c('a','b', 'c','d','e')
types <- factor(A)
B <- c(1,2,3,4,5)
C <- c(6,7,8,9,10)
D <- c(1,2,1,2,3)
ABC <- data.frame(B,C,D,types)

library(ggplot2)

ggplot(ABC, aes(x=B ,y=C ,size=D, colour=as.factor(types),label=types, shape=as.factor(types))) +
geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) +
scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000))  +
scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+
scale_y_continuous(lim=c(0,30000000)) +
scale_shape_manual(values = c('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19)) +
scale_colour_manual(values = c('a'="tomato", 'b'="yellow4", 'c'="palegreen2", 'd'="deepskyblue1", 'e'="orchid3"))`
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26218002

复制
相关文章
曾经,我以为我很懂MySQL索引
  在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
陈哈哈
2020/09/11
8070
曾经,我以为我很懂MySQL索引
匿名函数自调用_自己调用自己的函数叫
我们知道一个HTML文件在被加载的时候是从根标签html依次往下的,在遇到link,script等标签引入的外部资源时,下载外部资源,并执行外部资源。在js中,表达式会被立即执行,也就是说,不管是引入的外部js文件还是嵌入在html文件中的js脚本,其中的表达式都会被立即执行。 函数名是一个指向函数的指针。在JavaScript中,定义函数有常见的两种形式:函数声明和函数直接量(或者叫函数表达式)。 函数声明:采用function定义声明函数的标准写法,包括function,函数名,函数体。如
全栈程序员站长
2022/11/09
2.6K0
这代码写的太烂了!你以为我真想写“垃圾代码”吗?
很多时候作为底层的“码农”我们并没有选择权,然后我们的青春就浪费在了重复写垃圾代码里,浪费在了“项目目标里”,自己得到的也就是比正常小白领多一点的薪水,但是自己的发展空间被严重限制了
搜云库技术团队
2019/09/26
1K0
我是不会运行你的代码吗?不,我是不会导入自己的数据!
常常遇到有人问起看到分享的教程导入数据的方式是data(dune)等直接调用系统的数据,而自己怎么读入自己的数据呢?
生信宝典
2022/01/18
1.5K0
我的细胞系还是我以为的细胞系嘛?
我们在做细胞实验的时候,经常会有这样的疑虑,细胞被那么多人蹂躏了那么多次了,那我现在操作的细胞当时我以为的那个细胞系嘛?会不会有人在传代的时候不小心把这个细胞系的名字写成了另外的名字,然后就这样一直传下去了呢。
医学数据库百科
2020/07/07
4700
关于Linux的grep -f命令,我以为我发现了bug
今天,我像往常一样提取基因组的样本,我有一堆样本的ID,需要从所有的基因型的文件中提取出来。
邓飞
2021/09/03
1.2K0
一日一技:多个Python项目怎么调用我自己的工具函数?
在多年写代码的过程中,我总结了不少常用的工具函数。这些工具函数有的能够实现快速重试网络请求,有的可以把任意格式的时间转成标准格式,还有的可以自动生成正则表达式。
青南
2022/05/23
1.1K0
一日一技:多个Python项目怎么调用我自己的工具函数?
我准备自己做一个卫星
我是不是膨胀了,连卫星都敢做了?不知道你是否有想过自己制作一颗卫星吗?看完本篇文章,你也能自己做个卫星,要想上天就差个火箭了!
单片机点灯小能手
2020/07/17
1.1K0
我准备自己做一个卫星
我以为我很懂Promise,直到我开始实现Promise/A+规范
2我一度以为自己很懂Promise,直到前段时间尝试去实现Promise/A+规范时,才发现自己对Promise的理解还过于浅薄。在我按照Promise/A+规范去写具体代码实现的过程中,我经历了从“很懂”到“陌生”,再到“领会”的过山车式的认知转变,对Promise有了更深刻的认识!
程序员白彬
2021/03/09
6480
我以为我很懂Promise,直到我开始实现Promise/A+规范
我以为我很懂Promise,直到我开始实现Promise/A+规范
我一度以为自己很懂Promise,直到前段时间尝试去实现Promise/A+规范时,才发现自己对Promise的理解还过于浅薄。在我按照Promise/A+规范去写具体代码实现的过程中,我经历了从“很懂”到“陌生”,再到“领会”的过山车式的认知转变,对Promise有了更深刻的认识!
程序员白彬
2021/03/23
8000
我可以在一个构造函数中调用另一个构造函数么
但在 C++11 版本之前是不可以的,不过你可以通过两种方式来模拟实现(可以参见 the C++ FAQ entry),
ClearSeve
2022/02/10
3.2K0
[C#]我自己写的一个对字节中每位进行修改值的函数
byte初始状态: 11111111 byte修改第0位后的结果: 01111111 byte修改第1位后的结果: 00111111 byte修改第2位后的结果: 00011111 byte修改第3位后的结果: 00001111 byte修改第4位后的结果: 00000111 byte修改第5位后的结果: 00000011 byte修改第6位后的结果: 00000001 byte修改第7位后的结果: 00000000
静默虚空
2022/05/07
2.2K0
GitHub:我开源我自己;CEO:不存在的
TypeScript的开发者Resynth忽然Po了篇文章,表示代码托管服务GitHub的全部源代码被泄露。
龙哥
2020/11/19
5390
GitHub:我开源我自己;CEO:不存在的
我卷我自己——cvpr2021:Involution
本文重新回顾了常规卷积的设计,其具有两个重要性质,一个是空间无关性,比如3x3大小的卷积核是以滑窗的形式,滑过特征图每一个像素(即我们所说的参数共享)。另外一个是频域特殊性,体现在卷积核在每个通道上的权重是不同的。
BBuf
2021/03/25
1.9K1
故障分析 | MySQL:我的从库竟是我自己!?
爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱互联网,会摄影、懂厨艺,不会厨艺的 DBA 不是好司机,didi~
爱可生开源社区
2023/08/18
2180
故障分析 | MySQL:我的从库竟是我自己!?
用XGB调XGB?"我"调"我"自己?
上篇《深恶痛绝的超参》已经介绍了很多实用的调参方式,今天来看一篇更有趣的跳槽方法,用ML的方式调ML的模型我们用我们熟悉的模型去调我们熟悉的模型,看到这里很晕是不是,接下来我们就看看XGBoost如何调XGBoost。
炼丹笔记
2021/06/15
5000
我什么也不懂,能搞个自己的网站吗?能!
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
我被狗咬了
2019/11/12
2.3K0
重构 -- 我是一个类,难道我不配有专属的测试代码吗?
刚看到这个观点的时候,我是很不以为然的,谁让它标题不吸引人>>>《构建测试体系》 就这标题,谁不知道要测试啊。还好我没有“以貌取文”,我认真的看了下去。
看、未来
2020/08/26
7730
我眼中的变量聚类
‍‍‍‍‍ 连续变量压缩的基本思路为:建模之前使用主成分、因子分析或变量聚类的方法进行变量压缩,后续建模时使用向前法、向后法、逐步法或全子集法进一步进行变量细筛。虽然方法的名称叫做变量聚类,但却并不是聚类分析,而是一种主成分分析的方法。
许卉
2019/07/15
1.5K0
我眼中的变量聚类
点击加载更多

相似问题

我可以为spring提供我自己的变量插值器吗?

10

Powershell:我可以为我自己的函数参数使用一个现有的枚举吗?

110

我可以为我自己的类创建资源属性吗?

10

我可以为carrot2使用我自己的标签吗?

16

我可以为我的业务逻辑创建自己的状态代码吗?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档