#r #ggplot2
#r #ggplot2
Вопрос:
Я пытаюсь отобразить линию поверх графика boxplot с x, полученным из factor.
Этот код работает хорошо:
x <- c(91,92,93,125,123,140)
y <- c(200,260,220,300,350,360)
d1 <- data.frame(x=x,y=y)
d1$f1 = factor(round(d1$x/10))
qplot(f1,y,data=d1,geom="boxplot")
d2<-data.frame(x2=c(90,140),y2=c(210,320))
qplot(x2,y2,data=d2,geom="line")
Но когда я пытаюсь добавить линию к графику…
qplot(f1,y,data=d1,geom="boxplot") geom_line(data = d2, aes(x = x2, y=y2))
Чтобы увидеть мои результаты: http://jeb-files.s3.amazonaws.com/Clipboard01.jpg
Как мне выровнять мою линию с моим boxplot?
Спасибо!
Комментарии:
1. Это «нормальное» поведение для ggplot, основанное на том, что вы ему передали. Почему вы преобразовали x в коэффициент? Ось x в качестве множителя теперь представлена внутренне в виде целых значений 1-3. Таким образом, построение линии со значениями x от 90 до 140 не имеет особого смысла. Если вы измените
x2 = c(1,3)
, то компоненты графика будут «выровнены», хотя я скептически отношусь к значению любого из них. На какой вопрос в целом вы пытаетесь ответить здесь?2. Я хочу сгруппировать значение x, поэтому я использую коэффициент!! Есть ли другой способ? Общая картина заключается в том, что у меня есть данные, которые я хочу отобразить в виде boxplot и наложить на них кривую уравнения.
Ответ №1:
A boxplot
требует, чтобы значения x были факторами, тогда как a geom_line
требует, чтобы значения x были числовыми. Вы можете получить то, что хотите, изменив geom_line
вызов таким образом, чтобы x
значение определялось как числовая версия упорядоченного множителя, полученного из round(x2/10)
:
qplot( f1,y,data=d1,geom="boxplot")
geom_line(data = d2, aes(x = as.numeric(ordered(round(x2/10))), y=y2))
Комментарии:
1. Спасибо за вашу помощь! Это лучше, чем то, что я делал до сих пор, но возможно ли изменить ось x для прямоугольного графика, а не для линии? Потому что с моими реальными данными у меня есть это: ссылка . Красная линия обычно является кривой.