R - как использовать содержание одного вектора как символ в графике?

У меня есть два векторы чисел равной длины. Как я вывожу первый вектор на печать при использовании соответствующего элемента во втором векторе как символ печати? (Фон: Я отсортировал первый столбец, и второй столбец содержит исходные индексы. Я хочу использовать индексы в качестве печатаемого символа так, чтобы я видел, какие точки данных являются выбросами, так как каждое число представляет одно выполнение данных).

 > x
$x
 [1]   25   29   30   34   38  572  700  733  870  879  899  934  982 1054 1135 1258
[17] 1315 1491 1685 1700 2069 2131 2284 3498 3506 4467 4656 5633 6642 8348

$ix
 [1] 23  3 18 30 13  8  4 14 11 17 12 29  9 15 19 16  7  1 20  2  6 28 21 10  5 22 24 26
[29] 25 27

Первый вектор является x$x, второй вектор является x$ix (результаты вызова вида с index.return = TRUE)

Я попробовал график (x$x, pch=str (x$ix)), но это рассматривает x$ix численно. Если бы это был Python, то я сделал бы что-то как строки = [ул. (x) для x в x$ix]. но это - R, и я забыл большую часть того, что я раньше знал.

Я нашел, что можно сделать as.character (x$ix) для получения строк,

> as.character(x$ix)
 [1] "23" "3"  "18" "30" "13" "8"  "4"  "14" "11" "17" "12" "29" "9"  "15" "19" "16"
[17] "7"  "1"  "20" "2"  "6"  "28" "21" "10" "5"  "22" "24" "26" "25" "27"

и я могу использовать это в качестве входа к pch. Но только первый символ используется (и согласно документам, это нормально).

Я знаю, что существует способ сделать это; я сделал это в колледже. Но я не могу ни за что в жизни помнить, как я сделал это.

Диаграмма без маркировок: alt text

Диаграмма с маркировками, но неправильный: alt text

6
задан Glorfindel 15 June 2019 в 10:05
поделиться

2 ответа

Это должно сработать:

x = 1:4
y = x
plot(x, y, ann=F, axis=F, col="blue", pch=16)
text(x, y, labels=c("1st", "2nd", "3rd", "4th"), col="red", pos=c(3,4,4,1), offset=0.6)

Просто преобразуйте свой вектор без данных (тот, который содержит метки) в вектор символов: labels = as.character (label_vector)

, а затем замените его третьим аргументом в строке 4 выше.

Функция «Текст» довольно универсальна из-за различных аргументов, которые вы можете передавать - например, (как в приведенном выше примере) вы можете установить цвет текста, отличный от цвета ваших точек данных, используя «col»; Вы также можете указать положение (относительно точки данных, аннотированной данной текстовой меткой) для каждой текстовой метки отдельно. Часто бывает полезно, чтобы текстовые метки, например, не перекрывали одну из осей, что и произошло при первом запуске этого примера без установки «pos». Итак, установив 'pos' (как c (3, 4, 4, 1)), я установил положение текстовых меток как «вверху», «вправо», «вправо» и «внизу» - перемещая первые данные направьте вверх, чтобы он не попал в нижнюю ось X, и переместите четвертую ось вниз, чтобы она не попала в верхнюю ось. Кроме того, используя «смещение» (значение по умолчанию - 0,5), вы можете указать величину корректировки положения.

10
ответ дан 8 December 2019 в 18:35
поделиться

Вот способ сделать это с помощью пакета ggplot2:

library(ggplot2)
x <- rnorm(10)
y <- rnorm(10)
labs <- 1:10
ggplot()+geom_text(aes(x=x,y=y,label=labs))

enter image description here

3
ответ дан 8 December 2019 в 18:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: