Использовать факторы и переменные с одинаковым масштабом - возможно? - PullRequest
1 голос
/ 28 ноября 2010

Я хочу построить данные из разных фреймов данных с помощью ggplot.Однако у меня проблемы с дискретным и непрерывным масштабами.

Допустим, мы хотим использовать эти данные:

x <- rnorm(9,5)
y <- rnorm(9,5)
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1)
x <- rnorm(9,5)
y <- rnorm(9,5)
f2 <- rep(c("d","e","f"),3)
df2 <- data.frame(x,y,f2)

Я хотел бы показать оба фрейма данных на одном графике.df1 $ f1 и df1 $ f2 оба должны отвечать за цвета точек:

p <- ggplot(df1,aes(x,y))
p <- p + geom_point(aes(colour=f1))
p <- p + geom_point(data=df2,aes(x,y,colour=f2))
p

Это работает.

Однако, когда у меня есть эти данные:

x <- rnorm(9,5)
y <- rnorm(9,5)
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1)
x <- rnorm(9,5)
y <- rnorm(9,5)
quan <- rnorm(9,1)
df2 <- data.frame(x,y,quan)

этот график не работает:

p <- ggplot(df1,aes(x,y))
p <- p + geom_point(aes(colour=f1))
p <- p + geom_point(data=df2,aes(x,y,colour=quan))
p

Error: Continuous variable () supplied to discrete scale_hue.

f1 как фактор, quan - числовое значение, и кажется логичным, что их нельзя использовать с одинаковым масштабом.Но как я могу определить отдельную шкалу для каждого фрейма данных?Или это возможно не возможно?

Я пытался использовать scale_colour_discrete и scale_colour_continuous, но кажется, что только одна из двух шкал может быть использована для одного графика.

1 Ответ

2 голосов
/ 29 ноября 2010

Вы можете иметь только один тип шкалы на график.В первом примере масштаб в обоих случаях является фактором, поэтому вы не получаете сообщение об ошибке.

Для второго примера один предназначен для непрерывной переменной (f), а другой - для коэффициента (quan).Когда вы пытаетесь передать 'quan', ggplot ожидает непрерывную переменную, а не множитель, и выдает вам сообщение об ошибке.

Вы должны попытаться упростить, используя сначала rbind (), а затем построение графика.Но убедитесь, что ваши данные отформатированы таким же образом.Если rbind завершается неудачно, это потому, что вы не передаете ему одинаково структурированные фреймы данных:

df3 <- rbind(df1,df2) 
p <- ggplot(df3, aes(x,y,colour=f) + geom_point()
...