Как получить выборочную информацию (или стробирование) из точечной диаграммы в R?

#r #ggplot2 #scatter-plot

#r #ggplot2 #точечная диаграмма

Вопрос:

Я хотел бы выделить, какие выборки (здесь имена строк) принадлежат исключительно любой из осей — например, все выборки, которые лежат на оси X, я хочу иметь возможность объединить их в новую группу groupA , а также с осью y. Образцы в середине должны быть исключены.

Я попробовал gatepoints , и у меня это не сработало.

Как мне это сделать в R?

 library(ggplot2)
hashes <- data.frame(
  row.names = c("AAACCTGAGTGTTTGC-1",
                "AAACCTGCACTCAGGC-1","AAACCTGGTAAGGGAA-1",
                "AAACCTGGTTCAGCGC-1","AAACCTGTCAAGGTAA-1",
                "AAACCTGTCCATTCTA-1","AAACGGGAGATATGGT-1","AAACGGGAGGATCGCA-1",
                "AAACGGGAGGCCCTCA-1","AAACGGGCAATGAAAC-1",
                "AAACGGGCAATGGATA-1","AAACGGGCACATCTTT-1",
                "AAACGGGCATGACATC-1","AAACGGGGTAAGGATT-1","AAACGGGGTATATGGA-1",
                "AAAGATGAGGCTCAGA-1","AAAGATGCAAGCCTAT-1",
                "AAAGATGCATTCGACA-1","AAAGATGGTCGCTTTC-1",
                "AAAGATGGTCGGCACT-1","AAAGATGTCAAACAAG-1","AAAGATGTCTTGTATC-1",
                "AAAGCAAAGAGGTTAT-1","AAAGCAAAGCCACCTG-1",
                "AAAGCAACAAGGACTG-1","AAAGCAACAATAGAGT-1","AAAGCAACAATCGGTT-1",
                "AAAGCAACACAGTCGC-1","AAAGCAACAGGTCGTC-1",
                "AAAGCAACATATGGTC-1","AAAGCAACATGTCTCC-1",
                "AAAGCAATCCGAACGC-1","AAAGCAATCGGTCCGA-1","AAAGCAATCTCATTCA-1",
                "AAAGTAGAGCCCGAAA-1","AAAGTAGAGGAGTACC-1",
                "AAAGTAGAGTTATCGC-1","AAAGTAGCATAAAGGT-1",
                "AAAGTAGGTCGACTGC-1","AAAGTAGTCAAACCAC-1","AAAGTAGTCACTTCAT-1",
                "AAATGCCAGATGCCTT-1","AAATGCCAGCGATATA-1",
                "AAATGCCAGGATGCGT-1","AAATGCCCAAGTCTAC-1",
                "AAATGCCCATTGCGGC-1","AAATGCCGTTTAAGCC-1","AAATGCCTCCATTCTA-1",
                "AAATGCCTCTCGGACG-1","AACACGTAGAGTGACC-1",
                "AACACGTAGCTCCCAG-1","AACACGTCATCGGAAG-1","AACACGTCATCGTCGG-1",
                "AACACGTGTTATGTGC-1","AACACGTTCAACGGGA-1",
                "AACACGTTCGATAGAA-1","AACCATGAGCCAGTTT-1",
                "AACCATGAGGCCGAAT-1","AACCATGCACCCATTC-1","AACCATGCACGTAAGG-1",
                "AACCATGCAGAAGCAC-1","AACCATGTCCAGGGCT-1",
                "AACCATGTCTGGTATG-1","AACCATGTCTGTACGA-1",
                "AACCGCGAGATTACCC-1","AACCGCGAGCACCGTC-1","AACCGCGAGGTGCTTT-1",
                "AACCGCGAGTCCTCCT-1","AACCGCGAGTGTCCCG-1",
                "AACCGCGCAAAGGAAG-1","AACCGCGCATGTTCCC-1",
                "AACCGCGGTTCCAACA-1","AACCGCGTCAAGGTAA-1","AACGTTGAGCTGGAAC-1",
                "AACGTTGCATCCGCGA-1","AACGTTGGTAAGGATT-1",
                "AACGTTGGTGGGTCAA-1","AACGTTGTCAGCTCTC-1","AACGTTGTCCAGAAGG-1",
                "AACGTTGTCCGTAGGC-1","AACGTTGTCGTTACGA-1",
                "AACTCAGAGTAGGCCA-1","AACTCAGCAGGAATCG-1",
                "AACTCAGCATCTGGTA-1","AACTCAGGTTCGGGCT-1","AACTCAGTCCAATGGT-1",
                "AACTCAGTCCTCTAGC-1","AACTCAGTCTCTGTCG-1",
                "AACTCAGTCTTACCTA-1","AACTCCCAGGGCATGT-1",
                "AACTCCCCAAGGGTCA-1","AACTCCCCAGCTCCGA-1","AACTCCCCATTTCAGG-1",
                "AACTCCCGTACTCTCC-1","AACTCCCGTAGTAGTA-1",
                "AACTCCCTCATCGGAT-1","AACTCCCTCCACGTTC-1",
                "AACTCCCTCCAGGGCT-1","AACTCCCTCGTTGCCT-1","AACTCTTAGAACTGTA-1",
                "AACTCTTAGAGTGAGA-1","AACTCTTAGGCGCTCT-1",
                "AACTCTTCAAGGTGTG-1","AACTCTTTCATCTGTT-1","AACTCTTTCTTTCCTC-1",
                "AACTGGTAGAGGGCTT-1","AACTGGTAGCTACCTA-1",
                "AACTGGTCAATCCAAC-1","AACTGGTCAGCGTAAG-1",
                "AACTGGTCATCACCCT-1","AACTGGTCATCAGTCA-1","AACTGGTCATTTCACT-1",
                "AACTGGTGTCAACATC-1","AACTGGTGTGTCGCTG-1",
                "AACTGGTTCACGCATA-1","AACTGGTTCAGTTGAC-1",
                "AACTGGTTCGCCATAA-1","AACTGGTTCGTTTATC-1","AACTTTCAGCTCCTTC-1",
                "AACTTTCCATCGGTTA-1","AACTTTCGTGTAATGA-1",
                "AACTTTCGTGTTAAGA-1","AACTTTCTCAACCAAC-1",
                "AACTTTCTCAGCTTAG-1","AACTTTCTCCGCGTTT-1","AAGACCTAGACACGAC-1",
                "AAGACCTAGATGCGAC-1","AAGACCTAGTCCCACG-1",
                "AAGACCTAGTCCGTAT-1","AAGACCTGTCCCGACA-1","AAGACCTGTGTAAGTA-1",
                "AAGACCTTCCAAAGTC-1","AAGACCTTCTAACGGT-1",
                "AAGACCTTCTGCGTAA-1","AAGCCGCAGAACTGTA-1",
                "AAGCCGCAGATCTGAA-1","AAGCCGCAGTGTACGG-1","AAGCCGCGTATTACCG-1",
                "AAGCCGCGTTTAGGAA-1","AAGCCGCTCAGAGACG-1",
                "AAGGAGCAGAATCTCC-1","AAGGAGCAGTTGTAGA-1",
                "AAGGAGCCACGCCAGT-1","AAGGAGCCACGGATAG-1","AAGGAGCGTCTAAAGA-1",
                "AAGGAGCTCAAGATCC-1","AAGGAGCTCACTCCTG-1",
                "AAGGAGCTCCAACCAA-1","AAGGAGCTCGGATGGA-1",
                "AAGGAGCTCTTACCGC-1","AAGGCAGAGACAGGCT-1","AAGGCAGAGGGTTCCC-1",
                "AAGGCAGAGGTCATCT-1","AAGGCAGAGTCAAGCG-1",
                "AAGGCAGAGTTTCCTT-1","AAGGCAGCACAAGACG-1","AAGGCAGGTCCTCTTG-1",
                "AAGGCAGGTGGACGAT-1","AAGGCAGTCAGAGACG-1",
                "AAGGCAGTCCGTAGTA-1","AAGGTTCCAATAAGCA-1",
                "AAGGTTCCACTTCGAA-1","AAGGTTCCAGCATACT-1","AAGGTTCCAGGGATTG-1",
                "AAGGTTCCAGTATAAG-1","AAGGTTCGTGCAGTAG-1",
                "AAGGTTCGTTAGAACA-1","AAGGTTCTCCGCGCAA-1",
                "AAGTCTGAGGCATGGT-1","AAGTCTGCATCACAAC-1","AAGTCTGCATGCTAGT-1",
                "AAGTCTGGTCATTAGC-1","AAGTCTGGTCCAGTTA-1",
                "AAGTCTGGTTCCACTC-1","AATCCAGAGCGCCTCA-1",
                "AATCCAGAGGGTATCG-1","AATCCAGAGTGGAGTC-1","AATCCAGCAAGGGTCA-1",
                "AATCCAGGTAAGTAGT-1","AATCCAGGTATAGTAG-1"),
  Hashtag1 = c(1501,21,1366,21,
               17,2331,15,16,1250,21,21,5,18,23,1338,29,
               23,1890,11,11,18,13,24,11,2936,4759,13,20,
               1024,19,21,15,22,10,1829,880,14,17,2863,
               20,26,2966,17,19,42,40,18,20,12,2248,
               3272,14,18,17,18,31,15,1145,17,16,20,10,14,
               27,12,30,20,23,1031,10,2814,10,2023,15,
               11,15,17,1598,21,20,11,2827,14,21,2022,21,
               1650,16,14,18,33,34,16,2286,14,23,28,15,
               16,1417,25,20,5471,9,1584,12,3470,15,9,
               307,18,26,5460,11,14,1913,1822,1141,18,18,
               16,4031,16,30,18,10,1707,15,19,30,14,31,
               1417,15,20,13,15,18,22,13,16,15,14,22,7,
               27,25,2227,16,1588,11,3915,12,17,23,10,
               2677,11,12,16,12,25,12,19,33,18,11,23,19,
               20,5793,28,19,26,12,2041,18,17,1339,24),
  Hashtag2 = c(22,16,11,14,13,
               16,11,1300,30,937,8,1165,1496,12,15,11,14,
               10,14,10,1378,15,2130,3,11,16,11,18,24,
               22,1591,732,2888,16,16,11,1244,18,14,13,
               2287,13,20,12,28,25,12,575,458,21,130,11,
               8,570,822,23,1389,9,13,23,10,11,19,20,9,
               1148,12,7,14,6,264,5,7,902,668,9,738,11,
               13,531,16,151,22,10,8,20,15,3740,23,9,
               28,528,12,14,6,4852,5816,10,15,12,3633,
               1240,10,10,10,18,31,10,188,801,858,20,20,
               389,874,21,15,9,1097,2370,19,13,481,20,650,
               1757,7,11,16,24,10,15,22,3544,16,936,
               801,10,958,15,21,15,13,790,8,3812,14,11,
               748,19,10,26,12,4205,11,450,13,15,6,3483,
               4591,11,11,382,567,12,15,16,11,11,11,2025,
               12,1004,140,16,15,22,20,1021)
)

ggplot(hashes, aes(x=Hashtag1, y = Hashtag2))  
  geom_point() 
  

Создано 2020-11-10 пакетом reprex (версия 0.3.0)

Комментарии:

1. Можете ли вы уточнить, что вы подразумеваете под «выборками, которые лежат на оси X»? Вы имеете в виду выборки со значением по оси y ниже некоторого порога? И сколько у вас допусков для неправильной классификации, к какой группе принадлежит точка?

2. Эти значения меняются для каждого хэштега, поэтому я подумал для начала о сверхстрогом правиле для тех значений, которые связаны y = 0 и y = 10 или 5 в лучшем случае. Я все еще изучаю данные, так что, может быть, 5%-ная неправильная классификация в порядке?

Ответ №1:

Соответствует ли это тому, что вы пытаетесь сделать?

 library(tidyverse)
Group_A <- hashes %>% 
  filter(Hashtag2 <= 20) %>% 
  rownames()

Group_B <- hashes %>% 
  filter(Hashtag1 <= 20) %>% 
  rownames()
  

Вы можете установить «пороговое значение» на любое значение, которое вам нужно (здесь это 20):

 library(tidyverse)
hashes %>% 
  filter(Hashtag1 <= 20 | Hashtag2 <= 20) %>% 
  ggplot(aes(x=Hashtag1, y = Hashtag2))  
  geom_point()
  

пример.png

Комментарии:

1. Спасибо за ответ! Но я хотел бы знать, какие выборки попадают на ось x или y, чтобы я мог разделить их на отдельные группы.

2. Да — это первая часть кода — Group_A — это выборки по оси y, Group_B — выборки по оси x

3. Боже мой! Прошу прощения за такой вопрос, я не знаю, почему я не подумал об этой простой вещи. Большое спасибо за ваше время, высоко ценится.