简体   繁体   中英

Changing x-axis labels in ggplot

I have a bar plot that has 12 x values. Using this code I get the plot I want except for the x-axis labels.

p <- ggplot(data=df.mean, aes(x=stock_name, y=invest_amnt, fill=trend_id)) +
  geom_bar(stat="identity", position=position_dodge()) +

  geom_errorbar(aes(ymin=invest_amnt-ic, ymax=invest_amnt+ic), width=.2,
                 position=position_dodge(.9)) 


p + scale_fill_brewer(palette="Paired") + theme_minimal() +              

theme(text = element_text(size=12, hjust = 0.5, family="Times")) +

theme_stata() + scale_color_stata()

Instead of displaying all 12 values on the x-axis I want to determine the labels by myself and only display 4.

I adjusted the code like this

p <- ggplot(data=df.mean, aes(x=stock_name, y=invest_amnt, fill=trend_id)) +
  geom_bar(stat="identity", position=position_dodge()) +

  geom_errorbar(aes(ymin=invest_amnt-ic, ymax=invest_amnt+ic), width=.2,
                 position=position_dodge(.9)) +

         scale_x_discrete( labels=c("UP\nDOWN", "DOWN\nUP", "STRAIGHT\nGAIN", "STRAIGHT\nLOSS")) +  
               scale_fill_discrete(name = "Trend", labels = c("negative", "flat", "positive")) 

p + scale_fill_brewer(palette="Paired") + theme_minimal() +              

theme(text = element_text(size=12, hjust = 0.5, family="Times")) +

theme_stata() + scale_color_stata()

Unfortunately, I get my 4 labels but also 8 NAs. I would like my 4 labels to be evenly spread on my x-axis. Since my labels are factors I do not know how to apply break here.

I've generated some sample data...hope I've understood the situation correctly. This seems to work, ie inserts breaks at the specified locations on a barplot, using the specified labels.

library(tidyverse)
df <- tribble(~x, ~y, 
              'cat',10,
              'dog', 20,
              'rabbit', 30,
              'fox', 30)

df <- df %>% 
  mutate(x = factor(x))

df %>% ggplot(aes(x,y))+
  geom_bar(stat = 'identity') +
  scale_x_discrete(breaks = c('cat','fox'), labels = c('pig', 'hen'))

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