Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ggplot2:当data.frame中存在NA值时,如何消除带有空图例的几何点冗余颜色代码?_R_Ggplot2 - Fatal编程技术网

ggplot2:当data.frame中存在NA值时,如何消除带有空图例的几何点冗余颜色代码?

ggplot2:当data.frame中存在NA值时,如何消除带有空图例的几何点冗余颜色代码?,r,ggplot2,R,Ggplot2,如图所示,图例中有一个恼人的粉红色圆点,其中有一个空图例(在“2”上方的“纸巾”图例部分)。我知道这是由于geom_point颜色选项中的ifelse语句造成的,但是有没有办法去掉粉色圆点并保持其余部分不变? 我不能删除NA,因为我需要在图中绘制它们,并显示缺少特定值 任何建议都将不胜感激!谢谢大家 df<- data.frame("SN" = 1:6, "Age" = c(21,15,10,23,56,78),"Score"=a

如图所示,图例中有一个恼人的粉红色圆点,其中有一个空图例(在“2”上方的“纸巾”图例部分)。我知道这是由于geom_point颜色选项中的ifelse语句造成的,但是有没有办法去掉粉色圆点并保持其余部分不变? 我不能删除NA,因为我需要在图中绘制它们,并显示缺少特定值

任何建议都将不胜感激!谢谢大家

df<- data.frame("SN" = 1:6, "Age" = c(21,15,10,23,56,78),"Score"=as.factor(c(20,49,60,54,23,43)), "bmi"=c(18,19,NA,NA,22,23), "Tissue"= c("heart","lung","skin", "brain", "heart","lung"))

p<- ggplot(df, aes(x = bmi, y=Score)) + 
  geom_point(aes(size=Age,colour=(ifelse(is.na(df$bmi),"",Tissue)))) +
  geom_text(label=(ifelse(is.na(df$bmi),"",df$Tissue)), hjust = 0, nudge_x = 0.025, check_overlap = FALSE, colour="black") 

p + labs(size="Age", colour="Tissue") 

df我想不出保留NA值的理由;如果不想将其从数据中删除,则不必删除,但可以在绘制绘图时将其过滤掉:

library(dplyr)
library(ggplot2)

df %>%
    filter(!is.na(bmi)) %>%
    ggplot(aes(x = bmi, y = Score)) +
        geom_point(aes(color = Tissue, size = Age)) + 
        geom_text(aes(label = Tissue), hjust = 0, nudge_x = 0.025, check_overlap = FALSE, colour="black") +
        labs(size="Age", colour="Tissue") 

也没有理由在单独的调用中分配axis标签,我只需要像上面的代码一样将它们一起执行。还要记住,当您在
ggplot
调用中引用变量时,不需要调用数据帧的名称,例如,您需要
tissure
而不是
df$tissure
;如果您发现自己需要后者,那么您可能希望在调用
ggplot

之前更适当地重塑数据,为什么要保留NAs?似乎您只是试图删除bmi为NA的值。只要在数据参数上这样做,事情就变得容易多了:
pI不能删除NA,因为在真实的数据集中,我想在绘图中显示该值缺失。感谢您的回答heds1,但是如果我需要保持“Score”=c(60,54),该怎么办在y轴中,即使缺少相应的bmi值?您希望在二维图上绘制一维
分数
数据点的位置?我不希望绘制它们。我希望显示y轴上的分数在那里,但缺少相应的BMI值。我的意思是把“分数”当作一个因素,而不是数字。我知道为什么要把“分数”作为一个因素来对待,这听起来可能会让人困惑,但在我的真实数据集中,“分数”对应于一个特定的研究,例如研究1、研究2等。谢谢。那么,你到底希望情节是什么样的呢?你确定散点图是表示这些数据的最佳方式吗?嗨,heds1,我希望该图与上图一样,但“组织”图例中没有粉红色的点。我认为散点图是表示数据的好选择。谢谢