我正在尝试显示多个图层ggplot2,但我想scale_fill_为每个图层使用不同的颜色方案.我似乎无法做到这一点,因为调用scale_fill_gradientn两次的东西只会用第二次调用覆盖第一次调用.
library( ggplot2 )
library( reshape2 )
library( RColorBrewer )
set.seed( 123 )
Run Code Online (Sandbox Code Playgroud)
我将首先绘制一个tile网格(注意我正在设置颜色scale_fill_gradientn):
foo <- matrix( data = rnorm( 100 ), ncol = 10 )
foo <- melt( foo )
plot <- ggplot() +
geom_tile( data = foo,
mapping = aes( x = Var1, y = Var2, fill = value ) ) +
scale_fill_gradientn(
colours = rev( brewer.pal( 7, "BrBG" ) )
)
plot
Run Code Online (Sandbox Code Playgroud)
现在我想在那个上面添加另一个情节,但是有一个独特的配色方案.我可以创建一个不同的情节:
bar <- data.frame( x …Run Code Online (Sandbox Code Playgroud) 是否可以按照图的x轴上的值拆分条形图的fill图例ggplot?
例如,使用以下数据:
library(ggplot2)
data <- data.frame(val=c(2,4,5,6,7,8,9),var1=c("A","A","A","B","B","C","C"),
var2=sample(LETTERS[1:7]))
ggplot(data,aes(x=factor(var1),y=val,fill=var2))+geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)
我得到以下情节:

我想要这样的东西,以使其更容易找到每种fill颜色对应的内容:

我试图在下面的情节背景上有2个"阴影".这些阴影应分别代表橙色和蓝色点的密度.是否有意义?
以下是要改进的ggplot:

这是df我用来创建这个图的代码和数据(矩阵):
PC1 PC2 aa
A_akallopisos 0.043272525 0.0151023307 2
A_akindynos -0.020707141 -0.0158198405 1
A_allardi -0.020277664 -0.0221016281 2
A_barberi -0.023165596 0.0389906701 2
A_bicinctus -0.025354572 -0.0059122384 2
A_chrysogaster 0.012608835 -0.0339330213 2
A_chrysopterus -0.022402365 -0.0092476009 1
A_clarkii -0.014474658 -0.0127024469 1
A_ephippium -0.016859412 0.0320034231 2
A_frenatus -0.024190876 0.0238499714 2
A_latezonatus -0.010718845 -0.0289904165 1
A_latifasciatus -0.005645811 -0.0183202248 2
A_mccullochi -0.031664307 -0.0096059126 2
A_melanopus -0.026915545 0.0308399009 2
A_nigripes 0.023420045 0.0293801537 2
A_ocellaris 0.052042539 0.0126144250 2
A_omanensis -0.020387101 0.0010944998 2
A_pacificus 0.042406273 -0.0260308092 2 …Run Code Online (Sandbox Code Playgroud)