Обратите внимание: я новичок в R. Я объединил два фрейма данных с одним общим столбцом с помощью метода merge (). Я получил фрейм данных вроде:
x y1 y2
1 3 5
2 2 4
1 2 2
3 5 5
...
И т.п. Я хотел бы построить такой фрейм данных с помощью ggplot. То, что я создал (используя документацию geom_point, является
ggplot(data = dat_c, aes(games, variance.x)) +
geom_point(aes(x = games, y = variance.x), legend= TRUE, xlab="X", ylab="Y", colour=alpha('red', 0.05)) +
geom_point(aes(x = games, y = variance.y), legend = TRUE, colour=alpha('blue', 0.05) )
Это работает, NaN меня не беспокоят, потому что я получаю предупреждение, что они игнорируются, и это нормально. Однако у меня есть две проблемы, и я не знаю, как их исправить:
- мой фактический график расположен в нижнем левом углу, я хотел бы установить максимальные значения для осей X и Y (динамически, например, с максимальным значением из данных + 100 или что-то в этом роде)
- легенда не отображается
- оси не описаны
Вот как это выглядит:
2 ответа
Смотрите также:
- Постройте несколько переменных на оси Y с помощью ggplot
- R - создание легенды для трех наборов данных на одном графике с помощью ggplot
- Как вручную добавить легенду к объекту ggplot
- ggplot и R: две переменные во времени
(это результаты поиска [r] ggplot melt
, хотя вы могли также попасть туда через [r] ggplot legend
...)
Если вы можете, получите копию книги ggplot
и прочтите ее с самого начала - к сожалению, PDF-файл черновика больше не доступен в Интернете, но книга стоит вложенных средств.
На самом деле у вас есть несколько точек со значениями
x
иy
около крайних значений вашего графика. Их просто трудно увидеть, потому что они почти прозрачны (их будет немного легче увидеть на белом фоне, т.е. попробуйте добавить+theme_bw()
к вашему вызовуggplot
). Вы можете использоватьxlim
иylim
, если хотите ограничить диапазон графика. (Попробуйтеsummary
на своих данных и проверьте максимальные значения ...)лучший способ нарисовать оси - это следовать идиоме
ggplot
«плавить» ваши данные в набор данных длинного формата с одним столбцом для категории (y1
противy2
) и еще один для значения, как показано ниже:
d <- data.frame(x=c(1,2,1,3),
y1=c(3,2,2,5),
y2=c(5,4,2,5))
library(ggplot2)
library(reshape2) ## for melt()
dm <- melt(d,id.var=1)
ggplot(data=dm,aes(x,value,colour=variable))+
geom_point(alpha=0.2)+
scale_colour_manual(values=c("red","blue"))+
labs(x="games",y="variance")
(извините за немного странное форматирование) Я установил значение alpha
немного выше, потому что в противном случае было бы трудно увидеть точки на рисунке. Я думаю, что цвета по умолчанию (красноватый и синий) в порядке, но я использовал scale_colour_manual
, чтобы получить их так, как вы указали.
- Я не уверен, что ты имеешь в виду.
Вы должны melt
преобразовать ваши данные в длинный формат, а затем сопоставить эстетику цвета с переменной столбцом из расплавленного data.frame. Что-то вроде этого:
dat <- data.frame(x = c(1,2,1,3), y1 = c(3,2,2,5), y2 = c(5,4,2,5))
dat.m <- melt(dat, id.vars = "x")
ggplot(dat.m, aes(x, value, colour = variable)) +
geom_point() +
scale_colour_manual(values = c("red", "blue"))
Вы можете вручную установить пределы с помощью xlim()
и ylim()
соответственно. Непонятно, что вы делаете с альфой, поэтому оставлю это на ваше усмотрение.
Похожие вопросы
Связанные вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.