微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在for循环中为蜂群图中的分位数分配颜色

如何解决在for循环中为蜂群图中的分位数分配颜色

我的目标是为for循环中的多个beeswarm图分配分位数(数据的前25%,第二25%,等等)的自定义颜色。我添加了我的代码一个蜂密图的图像。灰色点(请参见图)需要分为四个大致相等的组,以便将自定义颜色分配给这些点。我正在尝试使用cut()和Quantile()来实现这一点。

Beeswarm plot

colNames <- names(df)[15:18]
for(i in colNames){
  plot <- ggplot(data = df %>% filter(player != "F. Gago"),aes_string(x = factor(0),y = i),groupOnX = FALSE) +
    geom_quasirandom(shape = 21,fill = **cut(quantile(i))**,size = 12) +
    scale_fill_manual(values = c("Red","Orange","Yellow","Green")) +
    labs(title = i) +
    theme(axis.title.y = element_blank(),axis.text.y = element_blank(),axis.ticks.y = element_blank(),axis.title.x = element_blank(),axis.text.x = element_text(size = 20,colour = "black"),axis.ticks.x = element_blank(),plot.title = element_text(size = 25,vjust = 3,colour = "black",face = "bold"),plot.caption = element_text(vjust = -6,face = "italic"),plot.margin = unit(c(1,1,1),"cm"),panel.grid.major = element_blank(),panel.grid.minor = element_blank(),panel.background = element_blank(),axis.line.x = element_line(colour = "black",size = 2)) +
    geom_point(data = df %>% filter(player == "F. Gago"),aes_string(y = i),shape = 21,colour = "white",fill = "#62150F",size = 14) +
    coord_flip() 
  print(plot)
  Sys.sleep(2)
}    

运行上述代码时,出现以下错误

(1-h)* qs [i]中的错误:二进制运算符的非数字参数

我已使用cut()函数将部分代码调整为:

cut(quantile(df[[i]]),breaks = 4)

我收到以下错误

错误:美学必须为长度1或与数据相同 (22):填充

我认为上述错误是由于数据中应用了过滤器而导致的(23个数据点指向22个数据点)。

一些可使用的代码

structure(list(player = c("F. Vera","G. Giménez","L. Romero","M. Pittón","L. Vera","E. Pérez"),team = c("Argentinos Juniors","Chicago Fire","Independiente","Vélez Sarsfield","Lanús","River Plate"),position = c("DMF,RDMF","DMF,LCB,LDMF",LCMF,LDMF,"RDMF,RCMF,LCMF","DMF"),age = c(20,28,26,25,23,34),market_value = c(9e+06,3e+06,2e+06,2e+06),contract_expires = c("2021-06-30","2021-12-31","2023-06-30","2021-06-30","2023-06-30"),matches_played = c(14,19,11,20,18),minutes_played = c(973,1595,1718,589,1571,1625),birth_country = c("Argentina","Argentina","Argentina"),passport_country = c("Argentina","Argentina"
),foot = c("right","left","right","right"
),height = c(179,180,167,181,164,178),weight = c(74,78,70,60,77),on_loan = c("no","no","no"
),p_adj_interceptions = c(6.93,8.33,10.58,6.75,4.46,10.29
),progressive_runs_per_90 = c(1.11,2.09,0.37,0.92,3.04,1.22),smt_passes_per_90 = c(0.18,0.39,0.31,0.46,2.52,0.55
),progressive_passes_per_90 = c(6.29,8.35,7.86,6.57,10.71,11.91)),row.names = c(NA,-6L),class = c("tbl_df","tbl","data.frame"
))

如何获取数据的分位数并在for循环中为其分配自定义颜色?

解决方法

如果我正确理解了您的问题,则可以在构建图之前通过使用ntile()函数(根据分位数指定数字)添加新列来“预处理”数据,然后将该新列转换为一个因子,最后构建通过将此新列映射到颜色美学的图形。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?