So I gave myself a project in my last post to remove hard-coded numbers in my code to plot a stacked histogram. I succeeded, but it may have been more work than it's worth. Perhaps it's time for me to move on to ggplot2 or lattice?
cats = levels(dat$Type) # same as before
xaxis = round(range(scores$x)*5)/5 # the range, rounded to every .2
breaks = seq(xaxis[1]-.2, xaxis[2]+.2, .2) # the breaks to use for histograms
histData = sapply(cats, function(x) {
hist(scores$x[which(dat$Type == x)],
breaks = breaks)$counts
})
allhistData = do.call(rbind, list(histData))
barplot(t(allhistData), space = 0, ylab = "number of sequences", xlab = "LD")
zero = which(breaks==0)-2 # find the 0 on my x-axis. The plot starts at -1
marks = seq(floor(xaxis[1]), ceiling(xaxis[2])) # the tick-marks I want to use, every integer
ticks = numeric() # this vector will hold where I want the tick labels to appear
while(zero >= -1) {
ticks[length(ticks)+1] = zero
zero = zero - 5
} # goes down by five, which corresponds to one LD unit
while(length(ticks) < length(marks)) {
ticks[length(ticks)+1] = max(ticks) + 5
} # go up by five, until I have as many locations as I have labels
axis(side = 1, at = ticks[order(ticks)], labels = marks) #I need to order the tick marks in sequential order
legend("topleft", legend = cats, text.col = c("black", "gray"))
This produces the same plot from the previous post.
No comments:
Post a Comment