Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Overflowing X axis (ggplot2)

Tags:

r

ggplot2

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

like image 260
sogrady Avatar asked Jan 20 '13 20:01

sogrady


2 Answers

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

like image 185
Arun Avatar answered Nov 11 '22 03:11

Arun


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)
like image 44
N8TRO Avatar answered Nov 11 '22 02:11

N8TRO