为ggplot中的每个矩形添加相同的渐变

时间:2016-06-06 10:11:56

标签: r ggplot2

我正在尝试在下面创建的 ggplot2 中显示颜色渐变。因此,使用以下数据和代码

<!-- 16:9 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>

<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-4by3">
  <iframe class="embed-responsive-item" src="..."></iframe>
</div>

我的输出是这样的: enter image description here

但现在我想插入颜色渐变,因此每个矩形看起来如下图所示(我想要的输出):

enter image description here

我也看过这个:

R: gradient fill for geom_rect in ggplot2

create an arrow with gradient color

http://www.computerworld.com/article/2935394/business-intelligence/my-ggplot2-cheat-sheet-search-by-task.html

Color Gradients With ggplot

Label minimum and maximum of scale fill gradient legend with text: ggplot2

How can I apply a gradient fill to a geom_rect object in ggplot2?

并尝试使用:

vector <- c(9, 10, 6, 5, 5) Names <- c("Leadership", "Management\n", "Problem Solving", "Decision Making\n", "Social Skills") # add \n Names[seq(2, length(Names), 2)] <- paste0("\n" ,Names[seq(2, length(Names), 2)]) # data.frame, including a grouping vector d <- data.frame(Names, vector, group=c(rep("Intra-capacity", 3), rep("Inter-capacity", 2))) # correct order d$Names <- factor(d$Names, levels= unique(d$Names)) d$group_f = factor(d$group, levels=c('Intra-capacity','Inter-capacity')) # plot the bars p <- ggplot(d, aes(x= Names, y= vector, group= group, fill=vector, order=vector)) + geom_bar(stat= "identity") + theme_bw()+ scale_fill_gradient(low="white",high="blue") # use facet_grid for the groups #p + facet_grid(.~group_f, scales= "free_x", space= "free_x") p+ theme(text = element_text(size=23),plot.background = element_rect(fill = "white"), strip.background = element_rect(fill="Dodger Blue")) + facet_grid(.~group_f, scales= "free_x", space= "free_x") + xlab("") +ylab("") + theme(strip.text.x = element_text(size = 18, colour = "white" )) + geom_text(size=10, aes(label=vector))

scale_fill_gradient(low="white",high="blue")

但我显然做错了。

1 个答案:

答案 0 :(得分:4)

我在这里和@RomanLustrik在一起。但是,如果你不能使用Excel(=更容易),也许只是添加一个带有alpha渐变的白色矩形已经足够了:

ggplot(d, aes(x= Names, y= vector, group= group,order=vector)) + 
  geom_bar(stat= "identity", fill="blue") +
  theme_bw() + 
  scale_fill_gradient(low="white",high="blue") + 
  annotation_custom(
    grid::rasterGrob(paste0("#FFFFFF", as.hexmode(1:255)), 
                     width=unit(1,"npc"), 
                     height = unit(1,"npc"), 
                     interpolate = TRUE), 
    xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=5
  ) + 
  geom_text(aes(label=vector), color="white", y=2, size=12)

enter image description here