Значение, которое вы передаете в aes()
, должно быть допустимым именем столбца из соответствующего фрейма данных.
Это данные, с которыми мы будем работать:
set.seed(0)
dat <- data.frame(
rownames=LETTERS[1:25],
variables=sample(c("S1", "S2", "S3"), 25, replace = TRUE),
value=runif(25)
)
groupid = sample(c("group1", "group2", "group3"), 25, replace = TRUE)
# assigning group as a new variable to the data we use for plotting
dat$group <- groupid
Данные выглядят так:
'data.frame': 25 obs. of 4 variables:
$ rownames : Factor w/ 25 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
$ variables: Factor w/ 3 levels "S1","S2","S3": 3 1 2 2 3 1 3 3 2 2 ...
$ value : num 0.2672 0.3861 0.0134 0.3824 0.8697 ...
$ group : chr "group3" "group2" "group3" "group2" ...
Обратите внимание, как присутствует переменная group
в исходных данных.Код для ggplot
относительно прост:
ggplot(dat, aes(x=rownames, y=value, color=group))+
geom_point()
Создает это:
Причина, по которой ваш код не сработал, заключалась в том, что groupid
былне присутствует в данных, которые вы передаете в вызов ggplot
.Вы указали melteddf
в качестве параметра данных, но в этом melteddf
фрейме данных не было переменной groupid
.
Если по какой-то причине вам потребовалась эстетика цвета (col
) для ссылки на значения изВы можете сделать это и в другом фрейме данных, чем тот, который вы указали в своем вызове ggplot2
.
Следующий код дает тот же результат:
set.seed(0)
dat <- data.frame(
rownames=LETTERS[1:25],
variables=sample(c("S1", "S2", "S3"), 25, replace = TRUE),
value=runif(25)
)
# group is a different data frame from dat
group = data.frame("groupid"=sample(c("group1", "group2", "group3"), 25, replace = TRUE))
ggplot(data=dat, aes(x=rownames, y=value))+
geom_point(aes(col=group$groupid))