我目前正在检查一些代码以实现跨平台兼容性。我正在使用Travis-CI在GitHub上的ubuntu下构建我的R包。如果我消除了这一部分,便可以成功构建,但是如果包含此代码,则会收到错误:
Must request at least one colour from a hue palette.
此版本运行良好,可在Windows和OS X上正常运行,此问题仅出现在ubutu版本中。我还想指出,这是在执行以下代码的小插图构建步骤中发生的。此错误消息似乎起源于this function in the R scales library.
我有一些看起来像这样的数据:
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:我修改了data部分以使其更加有用。复制/粘贴现在应该直接写出来。
答案 0 :(得分:2)
根据我的经验,当我最终获得标签的NA时会发生这种情况。我愿意打赌,您的“变量”变量具有NA,而不是您在调用ggplot时需要col =参数的字符串。我还注意到您在aes内外都两次有col =,这可能是有问题的。我只是使用Shiny碰到了这个问题,以为我愿意出2美分。