5

I have a list of companies that includes three variables: year founded, market capitalization and company name (actually, ticker symbol).

I want to plot them by year founded (X axis) and market capitalization (Y axis) with fill determined by vendor name.

Doing this:

 qplot(factor(Founded), Market.Cap, data = mcap, geom = "bar", fill = Vendor)

Gets me that, but the X-axis is illegible (see below). I've tried to feed scale_x_discrete() values (1900 - 2012, etc) but had no luck. How do I tell ggplot2 not to display the actual values but instead a spectrum of my choosing?

And as a side note, if you can remind me how to avoid the scientific notation on the Y-axis, great.

enter image description here

sogrady
  • 656
  • 2
  • 8
  • 12
  • 4
    Have you considered rotating the x-axis labels? For example, with `+ theme(axis.text.x = element_text(angle = 90, hjust = 1))` (as seen [here](http://stackoverflow.com/a/1331400/712603)) – David Robinson Jan 20 '13 at 20:36
  • @DavidRobinson: i hadn't, but that's a useful backup plan in the event i can't make wider axis labels work – sogrady Jan 20 '13 at 20:53

2 Answers2

9

I hope this helps. If rotating the axes doesn't work, then you can manually set the breaks and labels of the axis using breaks and labels within scale_x_continuous as follows:

require(ggplot2)
# dummy data
set.seed(45)
len <- 50
df <- data.frame(years = factor(seq(1901, 1950, length.out = len)), 
           values = 1e6 * runif(len), group=factor(rep(1:5, each=len/5)))
p <- ggplot(data = df, aes(x = years, fill=group)) + geom_bar(aes(weight = values))
require(scales) # for removing scientific notation
p <- p + scale_y_continuous(labels = comma)
# manually generate breaks/labels
labels <- seq(1901, 2000, length.out=10)
# and set breaks and labels
p <- p + scale_x_discrete(breaks=labels, labels=as.character(labels))
p

ggplot2

Arun
  • 108,644
  • 21
  • 263
  • 366
3

The answers are found here

For your case, I would suggest rotating the x-axis labels 90 degrees:

+ theme(axis.text.x=element_text(angle=90, hjust=1))

and to change the y-axis notation:

+ scale_y_continuous(labels=comma)
N8TRO
  • 3,269
  • 3
  • 20
  • 39