r - 如何更改 geom_miss_point 中缺失值的颜色(使用两种不同的色标)
问题描述
我正在努力根据是否缺失值来修改点的颜色/形状/...。
library(ggplot2)
library(naniar)
ggplot(data = airquality,
aes(x = Ozone,
y = Solar.R)) +
geom_miss_point()
airquality_no_na <-airquality[!(is.na(airquality$Ozone) | is.na(airquality$Solar.R)) ,]
airquality_na <-airquality[(is.na(airquality$Ozone) | is.na(airquality$Solar.R)),]
ggplot() +
geom_point(data = airquality_no_na,
aes(x = Ozone,
y = Solar.R, colour = "NoMissing")) +
geom_miss_point(data = airquality_na,
aes(x = Ozone,
y = Solar.R, colour = "Missing")) +
scale_colour_manual(name = 'Legende',
values =c('NoMissing'='green',
'Missing'='blue'))
我不知道如何在不拆分两个数据帧的情况下将缺失值设为绿色,将非缺失值设为蓝色。
编辑 :
我的问题有点复杂。我希望能够选择第一个数据集的颜色(蓝色缺失,绿色未缺失)和第二个数据集(红色缺失,黄色未缺失)
#Create dataframes
df1=as.data.frame(matrix(data=runif(n=200, 0,1),ncol=2))
df2=as.data.frame(matrix(data=runif(n=100, 0,1),ncol=2))
#Add missing values
df1[rbinom(n=100,size=1,prob = 0.1) ==1,1] <- NA
df1[rbinom(n=100,size=1,prob = 0.1) ==1,2] <- NA
df2[rbinom(n=50,size=1,prob = 0.1) ==1,1] <- NA
df2[rbinom(n=50,size=1,prob = 0.1) ==1,2] <- NA
#This doesnt work. It only print in blue (missing) and green (not missing)
ggplot() +
geom_miss_point(data = df1,
aes(x = V1,
y = V2)) +
geom_miss_point(data = df2,
aes(x = V1,
y = V2)) +
scale_colour_manual(values = c("blue", "green", "yellow","red"))
解决方案
我不确定这是否是个好主意。但是为了“在理论上展示如何做到这一点”。从我对包装的快速浏览中了解到,默认情况下naniar
会映射到颜色美学。..missing..
您需要深入挖掘实际的 geom 才能改变这种行为。但是有一个简单的解决方法。
使用 创建第二个色标ggnewscale
。
您不会首先对数据进行子集化,但这并不是一件坏事。不要害怕对数据进行子集化,这是很正常的事情。
library(tidyverse)
library(naniar)
library(ggnewscale)
ggplot() +
geom_miss_point(data = df1, aes(V1, V2)) +
scale_colour_manual(name = "df1", values = c("blue", "green")) +
new_scale_color() +
geom_miss_point(data = df2, aes(V1, V2)) +
scale_colour_manual(name = "df2", values = c("yellow","red"))
推荐阅读
- javascript - 根据键值合并对象数组
- c++ - 如何解决 XCode 中的 C++ 模板链接错误?
- r - 如何为管道运算符中的选择分配新值?
- java - 使用 Spring 在 java 中为 RESTful API 创建端点的最佳方法
- .net-core - 实体状态更改时向主题发送消息的模式
- docker - 使用 Docker 运行 sitespeed 和 Graphite
- python - Python / Google API - 授予的范围不能访问所有请求的空间
- reactjs - 如何在eclipse中将reactjs与spring集成?
- git - Git:我如何知道我打开的文件是主文件还是在分支中
- python - 当字段为无(mongoengine)时,为布尔和字符串字段传递什么默认值以成功进行数据库比较