首页 > 解决方案 > 使用 geom_rec 的 ggplot 中的矩形颜色

问题描述

我想要两个矩形 1- xmin=0.3,xmax=.7, ymin=5, ymax=100 带有一点深灰色 2- xmin=0.3,xmax=.7, ymin=3, ymax=5 带有浅灰色

我使用了以下但我无法得到我需要的东西。

p[[1]] <-ggplot(mat_ind, aes(x = times1, y = mat_ind[,1])) +
  geom_line() +ylab("") +
  xlab("")  + ylim(-6,100)+xlim(0.3,.7)+ theme(panel.grid = element_blank(),
                              axis.title = element_blank(),
                              axis.text.x = element_blank(),
                              plot.margin=unit(c(1,-1,0,0),"cm"))+theme_bw()+ 
  geom_rect(data=mat_ind, inherit.aes=FALSE,
                    aes(xmin=0.3,xmax=.7, ymin=5, ymax=100, fill="gray45"), alpha=0.01 )+
  geom_rect(data=mat_ind, inherit.aes=FALSE,
                    aes(xmin=0.3,xmax=.7, ymin=3, ymax=5, fill= "grey"), alpha=0.01 )

请你引导我这样做。

标签: rggplot2

解决方案


我们没有您的数据,但让我们创建一些具有相同名称的数据:

times1 <- seq(0.3, 0.7, length.out = 100)
mat_ind <- as.data.frame(matrix(cumsum(runif(100)), ncol = 1))

如果你想添加特定的矩形作为注解,你应该使用annotate而不是geom_rect. 否则,您可能会得到多个矩形副本:

library(ggplot2)

ggplot(data = mat_ind, aes(x = times1, y = mat_ind[,1])) +
  geom_line() +
  annotate("rect", xmin = 0.3, xmax = .7, ymin = 5, ymax = 100, 
           fill = "gray45", alpha = 0.5) +
  annotate("rect", xmin = 0.3, xmax = .7, ymin = 3, ymax = 5, fill= "grey", 
            alpha = 0.5) +
  xlab("") +
  ylab("") +
  ylim(-6,100) +
  xlim(0.3,.75) + 
  theme_bw() + 
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        axis.text.x = element_blank(),
        plot.margin = unit(c(1, -1, 0, 0), "cm"))

reprex 包(v0.3.0)于 2020-12-07 创建


推荐阅读