Вот подход, использующий магию пакетов ggplot2
и reshape2
.
Сначала воссоздайте данные в формате, который вы описали:
df <- data.frame(
P = paste("P", 1:4, sep=""),
Exp1 = c("L", "H", "L", "M"),
Exp2 = c("M", "M", "L", "H"),
Exp3 = c("H", "L", "L", "M"))
Далее загрузите пакеты дополнений:
library(reshape2)
library(ggplot2)
Затем используйте melt()
для преобразования ваших данных из широкоформатного формата в высокий. Переменная id - это «P», и мы говорим функции переименовать «variable» в «Exp»:
mdf <- melt(df, id.vars="P", variable="Exp")
Поскольку L - M - H имеет семантический порядок, мы используем параметр ordered
, равный factor()
, чтобы сообщить R об этом порядке:
mdf$value <- factor(mdf$value, levels=c("H", "M", "L"), ordered=TRUE)
Наконец, мы готовы подготовить ваши данные:
ggplot(mdf, aes(x=Exp, y=P, colour=value)) +
geom_point(size=3) +
scale_colour_manual(value=c("red", "green", "blue")) +
xlab("") +
ylab("")