r - 在 ggplot2 中为矩形颜色创建图例

标签 r ggplot2 legend

所以我正在尝试用 ggplot2 做一些独特的事情。我根据用户的分布标准差分数对他们进行评分,然后根据他们的范围在他们的分数上放置不同颜色的矩形。在这种情况下,任何距平均值 1+ SD 的值都是高值,距平均值 -1 或更低的 SD 值都是低值,其他值都是中等值。

我想做的是为矩形创建一个图例,其中说明每种颜色的范围。

这是示例数据框和代码

df <- data.frame(scale = factor(c("Self-Awareness","Enthusiasm","Composure","Assuredness","Sincerity")), 
                 scores = c(0.18,-3.0,0.1,1.3,0.67))

base<- ggplot(data=df, aes(x=scale, y=scores,ymin=-3.0,ymax=3.0,group=1))  + 
         stat_identity(geom="tile",width=0.8,fill=scale) + 
         geom_hline(aes(yintercept=-3.0),color="white", alpha=0.1) + 
         geom_hline(aes(yintercept=3.0),color="white", alpha=0.1)

我在第二部分做了一些修改,在顶部和底部插入了线条,以便图表可以正确缩放而不是放大。如果有更好的方法,请告诉我

base2<- base + 
         geom_rect(xmin=0.6, xmax= 1.4, ymin=1, ymax= 3, alpha=0.1,fill="#D53AFF") + 
         geom_rect(xmin=1.6, xmax= 2.4, ymin=-1, ymax= 1, alpha=0.1,fill="#278FF7") + 
         geom_rect(xmin=2.6, xmax= 3.4, ymin=-3, ymax= -1, alpha=0.1,fill="#2DF5F9") + 
         geom_rect(xmin=4.6, xmax= 5.4, ymin=-1, ymax= 1, alpha=0.1,fill="#278FF7") + 
         geom_rect(xmin=3.6, xmax= 4.4, ymin=-1, ymax= 1, alpha=0.1,fill="#278FF7")

所以我想要一个图例,说明 #D53AFF 的范围是“高”,#278FF7 的范围是“中”,#278FF7 的范围是“低”。非常感谢任何对此的帮助。

最佳答案

ggplot2 中的所有内容都围绕将数据放置在单个数据框中并将变量映射到美学:

rect_df <- data.frame(xmin = c(0.6,1.6,2.6,4.6,3.6),
                      xmax = c(1.4,2.4,3.4,5.4,4.4),
                      ymin = c(1,-1,-3,-1,-1),
                      ymax = c(3,1,-1,1,1),
                      grp = factor(c('High','Medium','Low','Medium','Medium'),
                                   levels = c(c('Low','Medium','High'))))

base + 
    geom_rect(data = rect_df,aes(x = NULL,y = NULL,xmin = xmin,xmax = xmax,ymin = ymin,ymax = ymax,fill = grp),
                alpha = 0.5) + 
    scale_fill_manual(values = c('#2DF5F9','#278FF7','#D53Aff'))

关于r - 在 ggplot2 中为矩形颜色创建图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705062/

相关文章:

key - Gnuplot,如何在键标题中包含空格字符?

r - 创建考虑来自早期记录的先验信息的新变量

r - 按需调用的简单示例

r - R 上的 ggplot 问题 : code is correct but I keep receiving the error "Must request at least one color from a hue palette"

javascript - 在数据图中制作垂直图例

删除ggplot图例中的重复标签

r - lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) 错误 : 0 (non-NA) cases in r with repeated mesures ANOVA

r - 通过分组变量折叠列(在基础中)

r - if else 条件在 ggplot 中添加一个额外的层

r - R 中多种图形类型的对齐(最好在 ggplot2 或 lattice 中)