J'ai un intrigue (échantillon de code collé ci-dessous) que j'essaie d'ajouter par ses propres étiquettes pour les informations de série. Au lieu de tracer "p1s1" "p1s2" "p3s4", je voudrais "traitement 1" "traitement 2" "traitement 3". J'ai utilisé des niveaux (series_id) pour obtenir les noms de série uniques et utilisé une table de recherche pour obtenir les descriptions. (Je pense que cela les obtient dans le même ordre que celui où ils sont tracés?) Et j'ai ces descriptions dans un vecteur appelé treatment_descriptions. D'après la documentation, je pense que je devrais utiliser une échelle ici, mais je ne peux pas savoir lequel, ou comment le faire. Quelque chose comme: scale_something (name = "Descriptions de traitement", breaks = NULL, labels = treatment_descriptions, formatter = NULL)? Mais où cela devrait-il aller?Comment ajouter des étiquettes de séries personnalisées à une légende dans ggplot de R?
library(ggplot2)
# Create a long data.frame to store data...
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8),
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"),
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2),
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3),
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2)
)
> # Now gives us some example long form data...
> > growth_series
> read_day series_id mean_od sd_od n_in_stat
> 1 p1s1 0.6 0.10 8 2
> 3 p1s1 0.9 0.20 8 3
> 9 p1s1 1.3 0.20 8 4
> 0 p1s2 0.3 0.10 8 5
> 3 p1s2 0.6 0.10 7 6
> 9 p1s2 1.0 0.30 5 7
> 0 p3s4 0.2 0.04 8 8
> 2 p3s4 0.5 0.10 7 9
> 8 p3s4 1.2 0.30 2 2
# Plot using ggplot...
ggplot(data = growth_series, aes(x = read_day, y = mean_od, group = series_id, color = series_id)) +
geom_line(size = 1.5) +
geom_point(aes(size = n_in_stat)) +
geom_errorbar(aes(ymin = mean_od - sd_od, ymax = mean_od + sd_od), size = 1, width = 0.3) +
xlab("Days") + ylab("Log (O.D. 730 nm)") +
scale_y_log2() +
scale_colour_hue('my legend', breaks = levels(growth_series$series_id), labels=c('t1', 't2', 't3'))
Merci, la première suggestion a fonctionné, le second n'a pas, je vais laisser la question ouverte pour l'instant, car je pense qu'il devrait y avoir une meilleure façon de le faire. Mes descriptions sont assez longues, donc les avoir dans la table comme ça a l'air vraiment moche, mais je suppose que je n'ai pas à les mettre dans la table jusqu'à ce que juste avant de tracer, donc ce n'est pas grave. Cheers, John – John
Quel est le problème avec le second? En passant, le "..." représente votre groupe de ggplot() + geom_line + .. + scale_y_log2 – xiechao
Bien sûr, j'ai essayé, mais j'ai une erreur de syntaxe, ça a marché pour vous? – John