Как создать точечную диаграмму с упорядоченными символьными переменными на оси x, используя plot () в r? - PullRequest
1 голос
/ 05 апреля 2020

Мои данные выглядят так (за исключением таблицы, импортированной из Excel):

x значения: E, D, D, C, B, A, A

y значения: 0, 1, 2, 3, 5, 7, 8

Я получаю «Ошибка в plot.window (...): нужны конечные значения xlim». Я попытался использовать plot(factor(x), y, type = "p") и все еще получаю линию вместо точки и бара, где есть две величины для одной и той же переменной. Создание упорядоченного списка с использованием factored<-factor(x), ordered = TRUE, а затем построение графика plot(factored, y, type = "p") также, похоже, не имеет никакого эффекта, и по умолчанию используется алфавитный порядок.

Любая помощь с использованием функции plot была бы полезной. Спасибо!

Ответы [ 2 ]

3 голосов
/ 05 апреля 2020

Вам необходимо скомпоновать вашу переменную x, чтобы она ассоциировалась с определенным уровнем, например, A -> 1, B-> 2 и т. Д.

Вы строите график с использованием цифры c из множитель и обозначьте ось X с уровнями:

x = c("A","A","B","C","D","D","E")
y = c(0,1,2,3,5,7,8)

x=factor(x)

plot(as.numeric(x),y,xaxt="n")
axis(1,1:length(levels(x)),levels(x))

enter image description here

Если вы хотите, чтобы они отображались в том порядке, в котором они отображаются в x и не отсортировано по алфавиту, например:

x = c("E","D","D","A","A","C","B")
y = c(8,5,7,0,1,3,2)
# or you specify it specifically, levels = c(....)
x=factor(x,levels=unique(x))

plot(as.numeric(x),y,xaxt="n")
axis(1,1:length(levels(x)),levels(x))

enter image description here

1 голос
/ 05 апреля 2020

Если вы используете пакет ggplot2, график можно построить, даже если x не является фактором, как в ответе StupidWolf . Обратите внимание, что я создаю data.frame с аргументом stringsAsFactors = FALSE.

library(ggplot2)

df1 <- data.frame(x, y, stringsAsFactors = FALSE)

ggplot(df1, aes(x, y)) + geom_point() + theme_bw()

enter image description here

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