Как добавить второй набор данных в точечный график в R? - PullRequest
1 голос
/ 18 января 2020

Я только начал изучать R в курсе статистики и начал изучать различные графики.

В одном упражнении от нас требуется построить две группы данных в точечный график, но я изо всех сил пытаюсь добавить в него вторую группу данных. Я использую функцию dotplot (), и две группы данных являются векторами (я думаю).

Я еще не совсем уверен в линейке go, поэтому, пожалуйста, потерпите меня.

smokers <- c(69.3, 56.0, 22.1, 47.6, 53.2, 48.1, 52.7, 34.4, 60.2, 43.8, 23.2, 13.8)
nonsmokers <- c(28.6, 25.1, 26.4, 34.9, 29.8, 28.4, 38.5, 30.2, 30.6, 31.8, 41.6, 21.1, 36.0, 37.9, 13.9)

dotplot(smokers, col = "blue", pch = 19)

points(nonsmokers, col = "red", pch = 18)

Результатом является точечная диаграмма данных о курильщике, но красные точки для некурящих не добавляются на график.

Как добавить точки на график или есть лучшие способы сделать это?

PS. В зависимости от задачи две группы должны находиться на одной линии.

Редактировать 1: Это пакет решетки. Я загрузил его по другому сценарию и забыл.

Ответы [ 2 ]

2 голосов
/ 18 января 2020

Один из подходов - объединить данные и использовать формулу в качестве аргумента для dotplot().

smokers <- c(69.3, 56.0, 22.1, 47.6, 53.2, 48.1, 52.7, 34.4, 60.2, 43.8, 23.2, 13.8)
nonsmokers <- c(28.6, 25.1, 26.4, 34.9, 29.8, 28.4, 38.5, 30.2, 30.6, 31.8, 41.6, 21.1, 36.0, 37.9, 13.9)
library(lattice)
df1 <- data.frame(value=smokers)
df1$group <- "smokers"
df2 <- data.frame(value=nonsmokers)
df2$group = "nonsmokers"
data <- rbind(df1,df2)
dotplot(value ~ group, data = data)

... и вывод:

enter image description here

Чтобы использовать группу для различения guish групп по цвету мы используем следующую форму dotplot().

aKey <- simpleKey(c("smokers","nonsmokers"))
dotplot(data$value,groups = data$group,key = aKey)

... и вывод:

enter image description here

2 голосов
/ 18 января 2020

В качестве альтернативы использованию пакета lattice вы можете заключить два вектора в один кадр данных и построить их с помощью ggplot2:

df <- data.frame(Value = c(smokers,nonsmokers),
                 Cat = c(rep("smokers",length(smokers)), rep("nonsmokers",length(nonsmokers))),
                 xseq = c(seq_along(smokers),seq_along(nonsmokers)))
library(ggplot2)
ggplot(df, aes(x = Cat, y = Value, color = Cat)) + geom_point()+xlab("")

enter image description here

EIT: построение двух групп в одной строке

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

ggplot(df, aes(x = "points", y = Value, color = Cat)) + geom_point()+xlab("")

enter image description here

Это то, что вы ищете?

...