web-dev-qa-db-fra.com

Qu'est-ce qui provoque l'erreur «Doit demander au moins une couleur à partir d'une palette de teintes» dans mon package R uniquement sur les versions basées sur Linux?

Je vérifie actuellement un code pour la compatibilité multiplateforme. J'utilise Travis-CI pour construire mon package R sous ubuntu sur les validations GitHub. Si j'élimine cette seule partie, elle se construit avec succès, mais si j'inclus ce code, je reçois l'erreur:

Must request at least one colour from a hue palette.

Cela fonctionne bien et fonctionne correctement sur Windows et OS X, ce problème n'apparaît que sur la version ubutu. Je tiens également à souligner que cela se produit lors de l'étape de génération de la vignette qui exécute le code qui suit. Ce message d'erreur semble provenir de cette fonction dans la bibliothèque d'échelles R.

J'ai quelques données qui ressemblent à ceci:

gene <- c("ISG20","ISG20","HEY1","ISG20","ACTB","MDM2","CDYL","HEY1","ACTB","UTP3","MDM2") 
variable <- c("6h_ebov","1d_ebov","1d_ebov","2d_ebov","2d_ebov","2d_ebov","2d_restv","2d_restv","2d_restv","2d_restv","2d_restv")
value <- c(-4.54267311671893,0.523667984831315,0.552671011358972,3.97643775389922,0.888734866999937,1.26719604773752,1.31653814202267,2.28445821019938,1.00301304727651,1.86941283629719,1.33916249182697 )

filteredList <- data.frame(gene,variable,value)

> head(filteredData)
   gene variable      value
1 ISG20  6h_ebov -4.5426731
2 ISG20  1d_ebov  0.5236680
3  HEY1  1d_ebov  0.5526710
4 ISG20  2d_ebov  3.9764378
5  ACTB  2d_ebov  0.8887349
6  MDM2  2d_ebov  1.2671960

J'utilise ggplot2 pour afficher ces données, ma commande est approximativement la suivante:

library(ggplot2)
library(ggthemes)

stata_long_pal = c(stata_pal("s2color")(15), stata_pal("s1rcolor")(15))
plot_out <- ggplot(filteredList, aes(x=value, y=factor(variable, levels=as.character(unique(variable)), ordered=TRUE), label=variable, col=variable)) + 
        geom_point(stat='identity', aes(col=variable), size=3) +
        theme_stata() + 
        scale_fill_manual(values=stata_long_pal) + 
        theme(axis.text.y = element_text(angle = 45, hjust = 1), plot.title = element_text(size=14, face="bold", hjust=0)) + 
        guides(col=guide_legend(ncol=6%/%3)) +
        theme(legend.text = element_text(size=12)) +
        theme(legend.title=element_blank()) +
        theme(axis.text=element_text(size=12, face="bold")) +
        theme(text = element_text(size=22,margin = margin(t = 0, r = 10, b = 0, l = 0))) +
        labs(x="", y="", title="Differentially Expressed Genes", subtitle="Log2 Fold-Change")

C'est la partie qui déclenche l'erreur. J'ai l'impression que le problème doit être quelque peu technique avec aes () ou avec scale_fill_manual () peut-être. J'essaie de voir si les modifier de différentes manières a un effet, mais comme j'utilise Travis-CI, il faut un certain temps pour tester après chaque changement.

Quelqu'un voit-il ce qui pourrait être à l'origine du problème ou a-t-il une idée de pourquoi cela se produit? Merci d'avance.

EDIT: Je voudrais souligner que j'ai limité le problème à ce morceau de code.

geom_point(stat='identity', aes(col=variable), size=3) 

Si je fais ce qui suit, cela fonctionne mais ma coloration est perdue.

geom_point()

EDIT2: J'ai modifié la section des données pour être plus utilisable. Le copier/coller devrait être Word directement maintenant.

10
Adam Price

D'après mon expérience, cela se produit lorsque je me retrouve avec des NA pour mes étiquettes. Je suis prêt à parier que votre variable "variable" a des NA au lieu des chaînes que vous recherchez pour l'argument col = dans votre appel à ggplot. J'ai également remarqué que vous avez col = deux fois à l'intérieur et à l'extérieur de aes, ce qui pourrait être problématique. Je suis juste tombé sur cela en utilisant Shiny, et j'ai pensé offrir mes 2 cents.

3
roberty boberty