Julien
Julien

Reputation: 992

How to change scientific notation on legend labels in ggplot2

I wrote this code to create a map.

ggplot(data = Canada2015_Import_3) +
  borders(database = "world", 
          colour = "grey60",
          fill="grey90") + 
  geom_polygon(aes(x=long, y=lat, group = group, fill = Trade_Value_mean),
               color = "grey60") +
  scale_fill_gradient(low = "blue", high = "red", name = "Trade Value") + 
  ggtitle("Canadien Imports in 2015") + 
  xlab("") + ylab("") + 
  theme(panel.background = element_blank(),
        plot.title = element_text(face = "bold"),
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank())

This map gives me a legend with scientific notation, and I would like to change it to normal or with commas.

enter image description here

Does anybody know how to do that?

Here is the basic structure of my data frame.

Country   Trade_Value_mean  long      lat     group order subregion
Afghanistan    2359461     74.89131 37.23164     2    12      <NA>

All help is appreciated.

Upvotes: 19

Views: 15371

Answers (2)

Andy White
Andy White

Reputation: 81

you can also use at the beginning of your code:

options(scipen=10000)

Upvotes: 8

Julien
Julien

Reputation: 992

I figured it out. Basically all you have to do is insert the scales library and add labels = comma. Here's the modified code :

library(scales) 

ggplot(data = Canada2015_Import_3) +
  borders(database = "world", 
          colour = "grey60",
          fill="grey90") + 
  geom_polygon(aes(x=long, y=lat, group = group, fill = Trade_Value_mean),
               color = "grey60") +
  scale_fill_gradient(low = "blue", high = "red", name = "Trade Value", labels = comma) + 
  ggtitle("Canadien Imports in 2015") + 
  xlab("") + ylab("") + 
  theme(panel.background = element_blank(),
        plot.title = element_text(face = "bold"),
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank())

Upvotes: 25

Related Questions