Ответ 1
Вы можете попробовать
geom_line(position=position_jitter(w=0.02, h=0))
и посмотрите, хорошо ли это работает.
Есть ли способ дрожания строк в geom_line()
? Я знаю, что это явно не соответствует цели этого сюжета, но если у вас есть сюжет с несколькими строками, и они хотели бы, чтобы все они показали, что это может быть удобно. Возможно, какое-то другое решение этой проблемы видимости.
Пожалуйста, см. ниже код,
A <- c(1,2,3,5,1)
B <- c(3,4,1,2,3)
id <- 1:5
df <- data.frame(id, A, B)
# install.packages(reshape2)
require(reshape2) # for melt
dfm <- melt(df, id=c("id"))
# install.packages(ggplot2)
require(ggplot2)
p1 <- ggplot(data = dfm, aes(x = variable, y = value, group = id,
color= as.factor(id))) + geom_line() + labs(x = "id # 1 is hardly
visible as it is covered by id # 5") + scale_colour_manual(values =
c('red','blue', 'green', 'yellow', 'black'))
p2 <- ggplot(subset(dfm, id != 5), aes(x = variable, y = value,
group = id, color= as.factor(id))) + geom_line() + labs(x = "id #
5 removed, id # 1 is visible") + scale_colour_manual(values =
c('red','blue', 'green', 'yellow', 'black'))
# install.packages(RODBC)
require(gridExtra)
grid.arrange(p1, p2)
Вы можете попробовать
geom_line(position=position_jitter(w=0.02, h=0))
и посмотрите, хорошо ли это работает.
Если вы просто хотите, чтобы две линии не перекрывались точно, теперь есть лучший способ: position_dodge(), который "регулирует положение, уклоняясь от перекрытий в сторону". Это лучше, чем добавление дрожания в любую строку, даже если это не нужно.
Пример кода:
df<-data.frame(x=1:10,y=1:10,z=1:10);
df.m <- melt(df, id.vars = "x");
ggplot(df.m, aes(x=x,y=value,group=variable,colour=variable))
+ geom_line(position=position_dodge(width=0.2));
Благодаря position_dodge()
теперь мы можем видеть, что на графике есть две строки, которые просто совпадают:
Я имею тенденцию использовать разные linestyles, так что, скажем, сплошная синяя линия "заглядывает" пунктирной красной линией поверх нее.
Опять же, это зависит от того, что вы хотите передать читателю. Имейте в виду, прежде всего, что данные должны быть точками и теориями, если только это не затуманивает вещи. Если значения y и x не совпадают, будет легче увидеть точки. (или вы можете применить существующую функцию jitter
к значениям x)
Затем, если вы просто хотите показать, какие прогоны находятся в "расслоении" и которые являются выбросами, перекрытие не имеет значения, поскольку маловероятно, что два отклонения будут почти равны.
Если вы хотите показать кучу почти равных прогонов, вы можете предпочесть (то есть, ваши читатели поймут лучше), чтобы построить дельты со средним, а не фактическим значением.