简体   繁体   中英

ggplot2 bar chart labels for one column for data grouped by multiple columns

I have a bar chart with x axis labels grouped by 2 column values. In the plot I want to show one column ( method ) values as legend and mark the other ( variable ) as labels on the plot itself for an easy to read picture. However each label on graph is repeated due to the grouping by the other column. How can I have a single label for a unique value instead of repeating it.?

Sample data and current output is below.

df <- data.table(w = rep(1:3, each = 3), 
        value = c(1.83,1.83,1.94,1.78,.95,1.09,3.14,3.14,3.14),
        method = seq(letters[1:3]),
        variable = c("fit","fit","fit","lwr","lwr","lwr","upr","upr","upr"))
ggplot(df,aes(x=w, y=value, color=factor(variable), fill=factor(method))) +
        geom_bar(stat="identity", position = "dodge") +
        geom_text(aes(label=paste(variable)), position = position_dodge(width =0.9),vjust=-.25) +
        theme_bw() +
        scale_y_log10(breaks=c(1,2,11,101,1001),labels=c(0,1,10,100,1000)) +
#       facet_wrap(~ppm) +
        annotation_logticks(sides = "lr")

在此处输入图片说明

I'm fond of saying ggplot2 is very good at plotting the data you give it . The variable you are using as the label has the repetition that is being plotted:

variable<-c("fit","fit","fit","lwr","lwr","lwr","upr","upr","upr")

If you don't want that repetition, create a variable without it for use as the label:

 df$label = ifelse(df$method == "b", as.character(df$variable), NA)

Then use aes(label = label) in your geom_text() call.

I would also recommend against using both fill and color mapped to different variables in a bar chart, but that's up to you. At the very least, if you define the color mapping in the geom_text() layer instead of in the plot initialization the bars won't have the clashing color outline.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM