我的数据框D
如下所示:
Track <- c(0,0,0,-1,1,1)
Length <- c(1,1,2,1,3,1)
Legend <- c("A","B","A","C","B","C")
D <- data.frame(Track,Length,Legend)
D
# Track Length Legend
# 0 1 A
# 0 1 B
# 0 2 A
# -1 1 C
# 1 3 B
# 1 1 C
我目前正在使用此代码绘制它:
ggplot(Z, aes(x=Track, y=Length, fill=Legend)) +
geom_bar(stat='identity') + geom_point() + expand_limits(x=0,y=0) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"))
图表看起来像这样:
但是我想将颜色白色分配给变量B.这种操作是否可行?另外,为了简单起见,我在这篇文章中使用虚拟数据。我将使用的实际数据可能在Legend下有10个或更多不同的变量,因此写出每个十六进制颜色并不像一个干净的选项。
感谢您的帮助
答案 0 :(得分:2)
您可以使用scale_fill_manual(values = c(..然后是您的十六进制颜色&#34;
ggplot(D, aes(x=Track, y=Length, fill=Legend)) +
geom_bar(stat='identity') + scale_fill_manual(values=c("#000000","#FFFFFF", "#00FF00"))
也可以使用
# The palette with grey:
cbPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# The palette with black:
cbbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# To use for fills, add
scale_fill_manual(values=cbPalette)
# Use a different gradient
scale_colour_gradientn(colours=rainbow(4))
# To use for line and point colors, add
scale_colour_manual(values=cbPalette)
答案 1 :(得分:2)
这会产生你追求的东西吗?
x <- length(levels(factor(Legend)))
x.colors <- hcl(h=seq(15,375,length=(x+1)),l=65,c=100)[1:x]
x.colors[x] <- "white"
ggplot(D, aes(x=Track, y=Length, fill=Legend)) +
geom_bar(stat='identity',colour="black") + geom_point() + expand_limits(x=0,y=0) +
scale_fill_manual(values=x.colors) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour ="black"))
我添加了scale_fill_manual()
为A,B和C指定颜色。我还将colour="black"
添加到geom_bar()
。你可以尝试使用和不使用第二部分,看看你的想法。