#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()
Комментарии:
1. Спасибо за ответ! Но я хотел бы знать, какие выборки попадают на ось x или y, чтобы я мог разделить их на отдельные группы.
2. Да — это первая часть кода — Group_A — это выборки по оси y, Group_B — выборки по оси x
3. Боже мой! Прошу прощения за такой вопрос, я не знаю, почему я не подумал об этой простой вещи. Большое спасибо за ваше время, высоко ценится.