Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
587 views
in Technique[技术] by (71.8m points)

r - Overflowing X axis (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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...