突出显示单个“栏"在ggplot中 [英] Highlight a single "bar" in ggplot

查看:80
本文介绍了突出显示单个“栏"在ggplot中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为条形图中的各个条选择颜色和填充图案(突出显示单个条")

i'd like to choose colors and fill patterns for individual bars in a bar graph (Highlight a single "bar")

我要填写其他颜色的条形是"Str"和"RB"

The bars, that i'd like to fill in another color are "Str" and "RB"

ggplot(GZ.mean, aes(x=Group.1, y=B)) +theme_bw(base_size=20, base_family="Times")+
geom_bar(stat="identity",colour="black", width=.6, position = "dodge", ,fill="gainsboro") +geom_errorbar(my.limits, width=0.2) +
theme(axis.text.x=element_text(family="Times", colour="black", size=rel(1.2), angle=30, hjust=1, vjust=1))+
theme(axis.text.y=element_text(family="Times", colour="black", size=rel(1.2))) +   scale_y_continuous(limits=c(0,170))+geom_text(size=6,aes(label=c("a","d","c","e","b","d","d","b","bc","d", "bc"),hjust=offset.h, vjust=offset.v)) +
scale_x_discrete(limits=c("JdC", "Stu", "Str", "Bol", "WBr", "Rij4", "Bif", "ErL", "ZtG", "PdV", "RB")) +labs(x= "Variety", y= "Total Sugar concentration [mg * g-1 FW]")

我已经尝试过使用"scale_fill_manual"和"scale_color_manual",但是仍然无法正常工作.

i tried already with "scale_fill_manual" and "scale_color_manual" but it still doesn't work.

推荐答案

scale_fill_manual应该可以工作.在数据中创建一列,指示是否应突出显示该栏,然后将该列提供给fill美感.然后可以使用scale_fill_manual根据需要分配颜色.这是一个代表性的例子:

scale_fill_manual should work. Create a column in your data that indicates whether the bar should be highlighted or not, then feed that column to the fill aesthetic. scale_fill_manual can then be used to assign colors as desired. Here's a representative example:

library( tidyverse )
library( ggplot2 )

## Generate some data to plot
X <- mtcars %>% group_by( cyl ) %>% summarize( mpg = mean(mpg) ) %>% ungroup

## Add a column indicating whether the category should be highlighted
X <- X %>% mutate( ToHighlight = ifelse( cyl == 6, "yes", "no" ) )

## Data looks like this
## A tibble: 3 x 3
##    cyl      mpg ToHighlight
##  <dbl>    <dbl>       <chr>
##1     4 26.66364          no
##2     6 19.74286         yes
##3     8 15.10000          no

## Plot the data
ggplot( X, aes( x = cyl, y = mpg, fill = ToHighlight ) ) +
    geom_bar( stat = "identity" ) +
    scale_fill_manual( values = c( "yes"="tomato", "no"="gray" ), guide = FALSE )

请注意guide = FALSE隐藏与ToHighlight列关联的图例.

Note guide = FALSE that hides the legend associated with the ToHighlight column.

这篇关于突出显示单个“栏"在ggplot中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆