Justin, Thanks for your help.
On Mon, Sep 12, 2011 at 2:19 PM, Justin Haynes <jtor14 at gmail.com> wrote:
the data you've given is all character vectors!
Yes, I'm sorry about that. I should not have used cbind when forming my data.frame. It changed my numeric data to character. This command would have been better. x <- data.frame(Symbol = sym, X1 = x1/sum(x1), X2 = x2/sum(x2), X3 = x3/sum(x3), stringsAsFactors = FALSE)
library(ggplot2) x.melt<-melt(x,id.vars='Symbol')
now, i think what you're looking for looks like:
ggplot(x.melt, aes(x=1:100, y=value, colour=variable)) + geom_line()
Yes, that's 90% of what I was looking for. The rest is just formatting.
but I'm not totally sure.? You aren't misunderstanding the syntax per say, but are asking it to plot a factor along the x-axis.? the behaviour of geom_line in that case is not what you are expecting.? you have a density value at each point but a categorical variable along the x-axis, so you cant draw a continuous line through them, they are discrete. the plot you reference uses more data and does the density calculation internally:
dat<-data.frame(x.var=rnorm(1000),cat.var=rep(letters[1:4],250)) ggplot(dat,aes(x=x.var,colour=cat.var))+geom_density()
let me know if this helps or if you would like further explanation.
Thanks so much for the help. It's much easier understanding when I can see an example with my own data. I'll keep working to get the more custom formatting of the example plot. Thank you, James
On Mon, Sep 12, 2011 at 11:43 AM, J Toll <jctoll at gmail.com> wrote:
Hi, I am trying to learn to use ggplot2 for what I had hoped would be a fairly simple task. ?I have a relatively small data.frame (100 by 4). The first column contains symbols. ?The 2nd, 3rd and 4th columns represent percentage weightings for each symbol using 3 different methodologies. ?For example: sym <- make.unique(replicate(100, paste(sample(LETTERS, 3, replace = TRUE), collapse = ""))) x1 <- sort(rexp(100) * 1000000, decreasing = TRUE) x2 <- sort(rexp(100) * 1000000, decreasing = TRUE) x3 <- sort(rexp(100) * 1000000, decreasing = TRUE) x <- data.frame(cbind(Symbol = sym, x1/sum(x1), x2/sum(x2), x3/sum(x3)), stringsAsFactors = FALSE) I'd like to plot a line for each of the 3 different methodologies. The y-axis would be percentage weight, the x-axis would be the symbol or row number, although I'd prefer that not to be shown. Aesthetically, I'd like the plot to look like this one (except with 3 lines), although I believe that's not the proper kind of plot for my data: http://www.ling.upenn.edu/~joseff/rstudy/plots/ggplotintro/densityidentity.png http://www.ling.upenn.edu/~joseff/rstudy/summer2010_ggplot2_intro.html Is there a way to do this with my data? ?From what I've been reading, I get the sense that my data might be in the wrong format for what I'm trying to do. ?I've tried experimenting with melt to reformat my data, but have gotten nowhere. I've tried a number of different ways to try to get this working. ?Most of the time, I don't even get any output. The closest I've gotten is this simple command, but the output is terrible. ggplot(x, aes(Symbol, c(V2,V3,V4))) + geom_line() I think I'm just completely misunderstanding the syntax of ggplot. Could someone please point me in the right direction? ?Thank you. James
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.