#r #ggplot2 #seq
Вопрос:
У меня есть расплавленный фрейм данных с 3 переменными.
rn variable value
1 1 mhits_L$fhits 0.002262443
2 2 mhits_L$fhits 0.000000000
3 3 mhits_L$fhits 0.000000000
4 4 mhits_L$fhits 0.002262443
5 5 mhits_L$fhits 0.002262443
6 6 mhits_L$fhits 0.000000000
7 7 mhits_L$fhits 0.000000000
8 8 mhits_L$fhits 0.002262443
9 9 mhits_L$fhits 0.000000000
10 10 mhits_L$fhits 0.000000000
rn variable value
1 1 mhits_H$fhits 0.000000000
2 2 mhits_H$fhits 0.000000000
3 3 mhits_H$fhits 0.000000000
4 4 mhits_H$fhits 0.000000000
5 5 mhits_H$fhits 0.004273504
6 6 mhits_H$fhits 0.000000000
7 7 mhits_H$fhits 0.000000000
8 8 mhits_H$fhits 0.000000000
9 9 mhits_H$fhits 0.000000000
10 10 mhits_H$fhits 0.004273504
rn variable value
1 1 mhits_VH$fhits 0.000000000
2 2 mhits_VH$fhits 0.000000000
3 3 mhits_VH$fhits 0.000000000
4 4 mhits_VH$fhits 0.004291845
5 5 mhits_VH$fhits 0.004291845
6 6 mhits_VH$fhits 0.004291845
7 7 mhits_VH$fhits 0.000000000
8 8 mhits_VH$fhits 0.004291845
9 9 mhits_VH$fhits 0.000000000
10 10 mhits_VH$fhits 0.000000000
Я хотел построить сглаженный график, используя seq(rn):
ggplot(aes(x = seq(rn), y = value, color = variable))
stat_smooth(aes(y = value), position = "identity", method = "loess", span = 0.1,se = FALSE)
График отображается (как показано на рисунке) с разделением каждой из переменных вместо одного графика, все три из которых имеют одинаковую ось x 0-550. В основном все три должны быть наложены на один и тот же seq(rn) от 0-550. Чего мне не хватает? сюжет
Комментарии:
1. Чего вы надеялись достичь с
seq(rn)
помощью этого ? Также изображение не отображалось в вашем вопросе. Пожалуйста, отредактируйте и опубликуйте, чтобы мы могли видеть, что происходит.2. Извините за это, добавил сюжет. Без seq () сглаживание не работает, потому что слишком много точек? Откройте для других опций вместо seq() — но с seq каждая переменная в отдельности выглядит так, как я хочу.
3. Похоже, вы просто показываете небольшой фрагмент своих данных, поэтому трудно понять, в чем проблема. Можете ли вы поделиться результатами
data %>% group_by(variable) %>% summarize_all(range)
Ответ №1:
Не уверен в проблеме с вашими данными, но вот пример с некоторыми моделируемыми данными, которые могут помочь.
library(tidyverse)
# set siulation size
n <- 100
# simulate some data
data1 <-
data.frame(
rn = rep(1:n, times = 3),
variable = rep(LETTERS[1:3], each = n),
value = c(1:n * (1 runif(n, 0, 1)),
1:n * (1 runif(n, 0, 2)),
1:n * (1 runif(n, 0, 3)))
)
# plot with seq
data1 %>%
ggplot(aes(seq(rn), value, color = variable))
geom_point()
geom_smooth(span = 0.2, se=F)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
# plot without seq
data1 %>%
ggplot(aes(rn, value, color = variable))
geom_point()
geom_smooth(span = .2, se=F)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Создано 2021-06-15 пакетом reprex (v2.0.0)
Комментарии:
1. Спасибо, что указали — я отредактировал вопрос, чтобы включить первые 10 строк других переменных. rn колеблется от 1-550 для всех 3, но данные выглядят одинаково для всех. Без seq — выглядит так ( imgur.com/a/k6hTgqo ) и я бы не хотел, чтобы это было facet_wrap().
2. Почему вы думаете, что этот график неправильный? На самом деле это выглядит разумно для меня, основываясь на том, что вы показали до сих пор.
3. Я хотел, чтобы это выглядело так imgur.com/a/xXNQ46q . Решается путем поворота данных вместо плавления. Понятия не имею, почему это сработало лучше. Спасибо за вашу помощь!