web-dev-qa-db-fra.com

ggplot: supprimer les lignes sur les bords du ruban

J'utilise ggplot pour tracer les données d'évolution du temps (proportions de fixation au fil du temps pour différents objets à l'écran) et je souhaite utiliser un ruban pour montrer le SE, mais le ruban lui-même a des lignes sur les bords supérieur et inférieur, ce qui rend la lecture du graphique un peu plus difficile. Je n'ai pas pu comprendre comment me débarrasser de ces lignes Edge. Voici mon code de tracé:

ggplot(d, aes(Time, y, color = Object, fill = Object)) +
  stat_summary(fun.y = "mean", geom = "line", size = 2) +
  stat_summary(fun.data = "mean_se", geom = "ribbon", alpha = .3)

Aucune suggestion?

Voici un exemple de travail minimal. J'ai compressé mes données sur:

   Time Object          y      lower     upper
 1 1000      C 0.12453389 0.04510504 0.2039627
 2 1000      T 0.58826856 0.37615078 0.8003864
 3 1000      U 0.09437160 0.03278069 0.1559625
 4 1100      C 0.12140127 0.03943988 0.2033627
 5 1100      T 0.64560823 0.44898727 0.8422292
 6 1100      U 0.06725172 0.01584248 0.1186610

d <- structure(list(Time = c(1000L, 1000L, 1000L, 1100L, 1100L, 1100L), Object = structure(c(1L, 2L, 3L, 1L, 2L, 3L), .Label = c("C", 
"T", "U"), class = "factor"), y = c(0.12453389, 0.58826856, 0.0943716, 
0.12140127, 0.64560823, 0.06725172), lower = c(0.04510504, 0.37615078, 
0.03278069, 0.03943988, 0.44898727, 0.01584248), upper = c(0.2039627, 
0.8003864, 0.1559625, 0.2033627, 0.8422292, 0.118661)), .Names = c("Time", 
"Object", "y", "lower", "upper"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))

et voici le nouveau code de tracé:

ggplot(d, aes(Time, y, color = Object, fill = Object)) +
  geom_line(size = 2) +
  geom_ribbon(aes(ymin = lower, ymax = upper), alpha = .3)

43
Dan M.

Vous pouvez supprimer la bordure en utilisant l'argument colour:

ggplot(d, aes(Time, y, color = Object, fill = Object)) +
  geom_line(size = 2) +
  geom_ribbon(aes(ymin = lower, ymax = upper), alpha = .3, colour = NA)

48
csgillespie

geom_ribbon Comprend linetype l'esthétique. Si vous voulez mapper le type de ligne à une variable, incluez-le dans l'argument aes(), sinon, placez linetype à l'extérieur et donnez-le simplement 0, Comme ceci:

ggplot(d, aes(Time, y, color = Object, fill = Object)) +
  geom_line(size = 2) +
  geom_ribbon(aes(ymin = lower, ymax = upper), linetype = 0, alpha = .3)

Plus d'informations ici: http://docs.ggplot2.org/current/geom_ribbon.html

27
user443854

Voici

ggplot(d, aes(Time, y,  fill=Object)) + 
  geom_line(size=2, aes(colour = Object)) + 
  geom_ribbon(aes(ymin=lower, ymax=upper), alpha=.3)
2
Ramnath