Что вызывает ошибку «Должен запросить хотя бы один цвет из палитры оттенков» в моем пакете R только для сборок на основе Linux? - PullRequest
0 голосов
/ 04 октября 2018

Я сейчас проверяю некоторый код на кроссплатформенную совместимость.Я использую Travis-CI для сборки своего R-пакета под Ubuntu на коммитах GitHub.Если я устраню эту единственную часть, она будет успешно скомпилирована, но если я включу этот код, я получу сообщение об ошибке:

Must request at least one colour from a hue palette.

Эта сборка работает нормально и работает правильно на Windows и OS X, эта проблема только появляетсяна убуту строить.Я также хочу отметить, что это происходит на этапе сборки виньетки, который выполняет следующий код.Это сообщение об ошибке происходит от этой функции в библиотеке весов R.

У меня есть некоторые данные, которые выглядят так:

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

Я использую ggplot2 дляотобразить эти данные, моя команда примерно так:

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")

Это та часть, которая вызывает ошибку.Я чувствую, что проблема должна заключаться в некоторой технической сложности, возможно, с aes () или scale_fill_manual ().Я пытаюсь понять, имеет ли какое-либо влияние изменение этих параметров несколькими способами, но поскольку я использую Travis-CI, тестирование после каждого изменения занимает довольно много времени.

Кто-нибудь видит, что может быть причиной проблемы, или знает, почему это происходит?Заранее большое спасибо.

РЕДАКТИРОВАТЬ: Я хотел бы отметить, что я сузил проблему до этого кода.

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

Если я сделаю следующее, это работает, номоя окраска потеряна.

geom_point()

EDIT2: я изменил раздел данных, чтобы сделать его более удобным.Копировать / вставить следует прямо сейчас.

1 Ответ

0 голосов
/ 08 апреля 2019

По моему опыту, это происходит, когда я заканчиваю с NA для своих лейблов.Я готов поспорить, что ваша переменная переменная содержит NA вместо строк, которые вы хотите использовать для аргумента col = при вызове ggplot.Я также заметил, что у вас есть col = дважды как внутри, так и снаружи, что может быть проблематично.Я просто наткнулся на это, используя Shiny, и подумал, что предложу свои 2 цента.

...