Судя по вашим пояснениям в комментариях, кажется, это именно то, что вам нужно.
library(ggplot2)
ggplot(df, aes(x=Date, group = B)) +
geom_line(aes(y = C, color = B))
Необходимо указать способ группировки переменных, передав столбец с группами в аргумент group.Затем передайте значения y в функцию aes()
в вызове geom_line()
.Вы можете добавить цвет линий на основе групп.
Просто обратите внимание, что это не корреляция, поэтому ваш вопрос вводит в заблуждение.
РЕДАКТИРОВАТЬ
Построить Cat1 против Cat2 без преобразования данных сложнее.Я не знаю, как это сделать без преобразования данных, но поскольку вы непреклонны в том, что это не то, что вам нужно, альтернативой является создание временной функции, в которой данные преобразуются внутри функции, а ggplot используется для преобразованных данных.в функцию и сюжет возвращается.Преобразованные данные определены только в области действия функции, поэтому они не будут находиться в глобальной среде
gg_group_point <- function(x, group, values){
df <- x
xy_key <- colnames(x[,group, drop = F])
xy_val <- colnames(x[,values, drop = F])
df_transformed <- spread(df, key = xy_key, value = xy_val)
xpos <- colnames(df_transformed[, 2, drop = F])
ypos <- colnames(df_transformed[, 3, drop = F])
p <- ggplot(df_transformed, aes_string(x=xpos, y=ypos)) + geom_point()
return(p)
}
Предоставить индекс столбца столбца с переменными оси x и y для аргумента группы, истолбец со значениями для аргумента значения.
df3 <- df[, c('B', 'Date', 'C')]
gg_group_point(df3, group = 1, values = 3)
Я переставил столбцы, чтобы убедиться, что это работает, даже если переменная группировки не находится во 2-м столбце.Единственное предостережение в том, что это работает, только если у вас есть две переменные.Что-то большее, чем это, вам потребуется несколько графиков xy или, возможно, граненый график.