Отразить оси X и Y, используя функцию графика basi c - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть вектор v3 с уровнями: setosa versicolor virginica

Когда я строю вектор с помощью функции графика basi c;

plot(v3, type = "s", xlim = NULL, ylim = c(0,50), 
main = "Plot 2", ylab = 'Frequency', col = "blue")

я получаю следующий график

initial_plot

Но вывод, который я хотел бы создать, выглядит следующим образом:

final_plot

Я знаю, что существуют некоторые (более элегантные) решения, но Я хотел бы создать это без установки и загрузки дополнительных пакетов. Я попробовал следующее с осью:

axis(1, at = c(0,50), labels = FALSE, tick = TRUE)
axis(2, at = levels(v3), labels = FALSE, tick = TRUE)

Но R. не примет это.

Спасибо за любой ввод!

1 Ответ

3 голосов
/ 12 февраля 2020

Похоже, вы ищете барплот, а не точечный график. Допустим, у вас есть такие данные:

ДАННЫЕ :

set.seed(321)
v3 <- sample(c("setosa", "versicolor", "virginica"), 100, replace = T)
v3
  [1] "versicolor" "versicolor" "setosa"     "setosa"     "setosa"     "versicolor" "versicolor" "setosa"    
  [9] "virginica"  "virginica"  "setosa"     "virginica"  "versicolor" "virginica"  "versicolor" "virginica" 
 [17] "setosa"     "versicolor" "virginica"  "virginica"  "versicolor" "versicolor" "virginica"  "versicolor"
 [25] "virginica"  "versicolor" "setosa"     "versicolor" "setosa"     "virginica"  "setosa"     "setosa"    
 [33] "virginica"  "versicolor" "setosa"     "virginica"  "versicolor" "setosa"     "versicolor" "setosa"    
 [41] "virginica"  "versicolor" "setosa"     "virginica"  "setosa"     "versicolor" "versicolor" "setosa"    
 [49] "setosa"     "virginica"  "virginica"  "virginica"  "setosa"     "virginica"  "versicolor" "versicolor"
 [57] "setosa"     "setosa"     "virginica"  "setosa"     "setosa"     "versicolor" "virginica"  "virginica" 
 [65] "virginica"  "setosa"     "virginica"  "versicolor" "versicolor" "versicolor" "virginica"  "versicolor"
 [73] "virginica"  "setosa"     "setosa"     "versicolor" "virginica"  "versicolor" "versicolor" "versicolor"
 [81] "versicolor" "virginica"  "setosa"     "virginica"  "setosa"     "versicolor" "virginica"  "setosa"    
 [89] "versicolor" "versicolor" "virginica"  "setosa"     "virginica"  "virginica"  "virginica"  "versicolor"
 [97] "setosa"     "virginica"  "virginica"  "setosa"

Чего вы не можете сделать, так это уровней коэффициентов графика; Вы можете только посчитать, сколько раз уровни встречаются в ваших данных: эти частоты вы можете построить. Вы можете сделать это, табулируя вектор v3 с помощью функции table. Чтобы перевернуть столбцы в положение по горизонтали , вы можете использовать аргумент horiz = TRUE (для этого также потребуется поместить метку Frequency на ось x, а не на ось y):

barplot(table(v3), horiz = T, main = "Plot 2", 
        xlab = 'Frequency', 
        ylab = 'Species',
        col = 'blue')

РЕЗУЛЬТАТ :

Полученный барплот будет выглядеть так: enter image description here

...