Построить немного на посту eipi10

м случае их 100 уникальных (X, Y) баллы, каждый из которых имеет идентификатор и принадлежитType, В этих 100 баллах 20 баллов имеют значения для трех других типов (CT,D,OP).

Вот процесс генерации данных:

df <- data.frame(X=rnorm(100,0,1), Y=rnorm(100,0,1), 
                 ID=paste(rep("ID", 100), 1:100, sep="_"),
                 Type=rep("ID",100),
                 Val=c(rep(c('Type1','Type2'),30),
                       rep(c('Type3','Type4'),20)))

Случайно выбранные 20 баллов (sample(1:100,20)) будет иметь значения, которые добавляют дополнительную информацию к точкам. Все эти 20 баллов в этом дополнительномType будет иметь информацию вType=="ID".

dat1 <- data.frame(Type=rep('CT',20),
                   Val=paste(rep("CT", 20), 
                             sample(1:6,20,replace=T), sep="_"))
dat1 <- cbind(df[sample(1:100,20),1:3],dat1)

dat2 <- data.frame(Type=rep('D',20),
                   Val=paste(rep("D", 20), 
                             sample(1:6,20,replace=T), sep="_"))
dat2 <- cbind(df[sample(1:100,20),1:3],dat2)

dat3 <- data.frame(Type=rep('OP',20),
                   Val=paste(rep("OP", 20), 
                             sample(1:6,20,replace=T), sep="_"))
dat3 <- cbind(df[sample(1:100,20),1:3],dat3)

df <- rbind(df, dat1, dat2, dat3)

Теперь, построение точек, имеющихD_1,D_4 значения дляType=="D".

df %>% filter(Val %in% c('D_1','D_4')) %>% 
  ggplot(aes(X,Y,col=Val)) + geom_point() + geom_text(aes(label=ID))

Примечание: я добавил идентификаторыgeom_text(aes(label=ID)) только для целей иллюстрации.

К этому существующему графику я должен добавить оставшиеся 92 точки, которые не имеют значений выше двух или вообще не имеют значений. Я попытался добавить дополнительные пункты к существующему подходу, упомянутому ХэдлиВот:

p <- df %>% filter(Val %in% c('D_1','D_4')) %>% ggplot(aes(X,Y,col=Val)) + geom_point() 

p + geom_point(data=df[(!df$ID %in% df$ID[df$Val %in% c('D_1','D_4')]) & df$Type=="ID",],
               colour="grey")

Вопросов:

Как изобразить выбранные точки и дополнительные точки в одной команде или изящно возможно?

Есть ли возможностьdplyr подход, который можно использовать в приведенной выше команде?

Обновить: df$Type=="ID" очень важно, так как позволяет наносить оставшиеся точки только один раз. В противном случае некоторые из этих точек имеют значения либо вCT или жеD или жеOP приводит к дублированию печати.

df %>% count(X,Y) %>% arrange(desc(n))
# # A tibble: 100 x 3
#             X          Y     n
#         <dbl>      <dbl> <int>
# 1 -0.86266147  2.0368626     4
# 2 -0.61770678  0.4428537     4
# 3  1.32441957 -0.9388095     4
# 4 -1.65650319 -0.1551399     3
# 5 -0.99946809  1.1791395     3
# 6 -0.52881072  0.1742483     3
# 7 -0.25892382  0.1380577     3
# 8 -0.19239410  0.5269329     3
# 9 -0.09709764 -0.4855484     3
# 10 -0.05977874  0.1771422     3
# # ... with 90 more rows

Похоже, первые три точки с одинаковыми значениями X, Y имеют значения дляType ID, CT, D, OP. Но эти точки должны быть нанесены только один раз.

Ответы на вопрос(0)

Ваш ответ на вопрос