如何在R图中缩放点?

如何在R图中缩放点?,r,plot,scale,R,Plot,Scale,我有40对鸟类,每对雄性和雌性都根据它们的颜色打分。颜色分数是一个分类变量(范围为1到9)。我想画出男性和女性配对颜色组合的频率。我必须创建一个包含每个组合(1/1、1/2、1/3、…9/7、9/8、9/9)数量的“表”,然后将其转换为一个称为“颜色计数”的向量。我想在“绘图”中的“cex”参数中使用“color_Count”来缩放每个颜色组合的大小。这不起作用,因为从表中读取数据的顺序不同。如何创建具有每个颜色组合频率的向量来缩放绘图点 见以下数据和代码: ## Dataset pairs o

我有40对鸟类,每对雄性和雌性都根据它们的颜色打分。颜色分数是一个分类变量(范围为1到9)。我想画出男性和女性配对颜色组合的频率。我必须创建一个包含每个组合(1/1、1/2、1/3、…9/7、9/8、9/9)数量的“表”,然后将其转换为一个称为“颜色计数”的向量。我想在“绘图”中的“cex”参数中使用“color_Count”来缩放每个颜色组合的大小。这不起作用,因为从表中读取数据的顺序不同。如何创建具有每个颜色组合频率的向量来缩放绘图点

见以下数据和代码:

## Dataset pairs of males and females and their colour classes
Pair_Colours <- structure(list(Male = c(7, 6, 4, 6, 8, 8, 5, 6, 6, 8, 6, 6, 5, 
7, 9, 5, 8, 7, 5, 5, 4, 6, 7, 7, 3, 6, 5, 4, 7, 4, 3, 9, 4, 4, 
4, 4, 9, 6, 6, 6), Female = c(9, 8, 8, 9, 3, 6, 8, 5, 8, 9, 7, 
3, 6, 5, 8, 9, 7, 3, 6, 4, 4, 4, 8, 8, 6, 7, 4, 2, 8, 9, 5, 6, 
8, 8, 4, 4, 5, 9, 7, 8)), .Names = c("Male", "Female"), class = "data.frame", row.names = c(NA, 
40L))

Pair_Colours[] <- as.data.frame(lapply(Pair_Colours, factor, levels=1:9))

## table of pair colour values (colours 1 to 9 - categoricial variable)
table(Pair_Colours$Male, Pair_Colours$Female)

Colour_Count <-  as.vector(table(Pair_Colours$Male, Pair_Colours$Female)) #<- the problem occurs here

## plot results to visisually look for possible assortative mating by colour
op<-par(mfrow=c(1,1), oma=c(2,4,0,0), mar=c(4,5,1,2), pty = "s")
plot(1,1, xlim = c(1, 9), ylim = c(1, 9), type="n", xaxt = "n", yaxt = "n", las=1, bty="n", cex.lab = 1.75, cex.axis = 1.5, main = NULL, xlab = "Male Colour", ylab = "Female Colour", pty = "s")
axis(1, at = seq(1, 9, by = 1), labels = T, cex.lab = 1.5, cex.axis = 1.5, tick = TRUE, tck = -0.015, lwd = 1.25, lwd.ticks = 1.25)
axis(2, at = seq(1, 9, by = 1), labels = T, cex.lab = 1.5, cex.axis = 1.5, tick = TRUE, tck = -0.015, lwd = 1.25, lwd.ticks = 1.25, las =2)
points(Pair_Colours$Male, Pair_Colours$Female, pch = 21, cex = Colour_Count, bg = "darkgray", col = "black", lwd = 1)
##数据集男女配对及其颜色类别

配对颜色您可以使用库plyr的函数
ddply()
总结数据,然后使用此新数据框绘制数据。计数在新数据帧的列
V1

library(plyr)
df<-ddply(Pair_Colours,.(Male,Female),nrow)
df
   Male Female V1
1     3      5  1
2     3      6  1
3     4      2  1
4     4      4  3

points(df$Male, df$Female, pch = 21, cex = df$V1, 
               bg = "darkgray", col = "black", lwd = 1)

您可以使用plyr库的函数
ddply()
总结数据,然后使用此新数据框绘制数据。计数在新数据帧的列
V1

library(plyr)
df<-ddply(Pair_Colours,.(Male,Female),nrow)
df
   Male Female V1
1     3      5  1
2     3      6  1
3     4      2  1
4     4      4  3

points(df$Male, df$Female, pch = 21, cex = df$V1, 
               bg = "darkgray", col = "black", lwd = 1)

您自己几乎给出了答案:以其他方式生成
颜色计数
,因此它的顺序与您的数据相同。显然,以其他方式,但如何进行?这与
ggplot2
中的
统计和
一起工作,或者
plotrix::sizeplot
您几乎自己给出了答案:以其他方式生成
颜色_计数
,因此它与数据的顺序相同。显然,以其他方式,但如何进行?这与
ggplot2
中的
统计和
一起工作,或者
plotrix::sizeplot
+1
ddply
应该是我的第一个想法。我整个上午都在用它!谢谢,这很有效。你能告诉我不使用“plyr”软件包怎么做吗?我想学习如何直接使用本机R命令执行此操作。@KeithLarson使用aggregate()+1
ddply添加的解决方案应该是我的第一个想法。我整个上午都在用它!谢谢,这很有效。你能告诉我不使用“plyr”软件包怎么做吗?我想学习如何直接使用本机R命令执行此操作。@KeithLarson使用aggregate()添加了解决方案