如何在ggplot2中移除Y轴首个标签(此处为$0)且保留其余默认标签?
Solution to Remove First Y-Axis Label ($0) in ggplot2 Facets
Hey there! Let's tackle that Y-axis label issue you're facing. Since you're using facet_grid with scales = "free", each panel has its own Y-axis ticks, so we need a flexible way to target just the first label (the $0 one) across all panels while keeping the rest of the dollar-formatted labels intact.
Here's the adjusted code with a custom label function that does exactly what you need:
library(ggplot2) library(scales) y <- data.frame( group = c("GROUP A", "GROUP A", "GROUP A", "GROUP B", "GROUP B", "GROUP B"), individual = c("Individual 1", "Individual 2", "Individual 3", "Individual 1", "Individual 2", "Individual 3"), value = c(2000, 9000, 45000, 3500, 11500, 38000) ) # Custom label function: keep all dollar labels except the first one custom_dollar_labels <- function(x) { # Generate original dollar-formatted labels labels <- scales::dollar_format(accuracy = 100L)(x) # Replace the first label with an empty string labels[1] <- "" labels } ggplot(data = y, aes(x = group, y = value)) + geom_bar(stat = "identity") + # Use our custom label function instead of the direct dollar_format scale_y_continuous(labels = custom_dollar_labels) + facet_grid(rows = vars(individual), scales = "free")
How this works:
- We create
custom_dollar_labels, a function that takes the Y-axis tick values (x) as input. - First, it generates the standard dollar-formatted labels using
scales::dollar_format(accuracy = 100L)just like your original code. - Then it replaces the first label in the set (which is $0 in your case) with an empty string, effectively removing it from display.
- Since
scales = "free"means each facet has its own Y-axis ticks, this function will automatically target the first label of each individual panel's Y-axis.
If you ever need to adjust which label to remove (like the second one instead), you just change the index in labels[1] to the position you want to blank out.
内容的提问来源于stack exchange,提问作者qfazille
相关产品推荐
相关产品推荐

