Zroutik Zroutik
2008-Jul-15 13:00 UTC
[R] creating axis of the plot before data are plotted -- solved
Solved. I tried to create a minimal example, but my script is too complicated to just cut out lines (too many dependencies). Instead of it, I sketch my idea. I do not say it is the nicest solution, but it works as I wanted. The first five rows of my data-matrix:> data_svd$u[1:5,][,1] [,2] [,3] [,4] [,5] [,6] [,7] 25.12333 -0.05845695 0.01147999 0.01369034 -0.014098243 -0.01332110 -0.03411848 -0.069044764 25.14667 -0.06067676 0.01207400 0.01567369 -0.003540611 -0.01833136 -0.04716164 -0.037310769 25.17 -0.06218749 0.01247501 0.02173719 0.008295593 -0.02289422 -0.03785958 -0.005219312 25.19333 -0.06310108 0.01122596 0.02510501 0.015560052 -0.01741544 -0.03004161 0.008608083 25.21667 -0.06362390 0.01073240 0.02882440 0.021066152 -0.02108871 -0.02228662 0.012336997 .... The rowname is printed as first at the beginning of the line. Now, I define the X-axis range:> XTimeRange <- seq(from=as.numeric(rownames(data_svd$u)[1]),to=as.numeric(rownames(data_svd$u)[nrow(data_svd$u)]), length=nrow(data_svd$u)) and plot the empty plot:> Components <- seq(1:4) # first four columns from the data-matrix > plot(c(XTimeRange[1], XTimeRange[length(XTimeRange)]),c(min(data_svd$u[,Components]), max(data_svd$u[,Components])), type = "n", main="Plot of the \"base\"", xlab = "time / ps", ylab = "a.u.") the x-axis is created automatically and nicely :) Now, I plot the curves into the plot with the same x-axis range:> for (x in rev(Components)) points(data_svd$u[, x]~XTimeRange, col = x,type = "l") My problem was in understanding what has to be assigned to the x-axis and when:> plot(c(XTimeRange[1], XTimeRange[length(XTimeRange)]),.... > points(data_svd$u[, x]~XTimeRange,...(Right now, I do not think it was so hard to create it, but anybody interested in running the script I can support the script.) Thank you very much for all hints It was a tough night... and in the morning I loved R a bit more. Zroutik On Tue, Jul 15, 2008 at 12:18 AM, stephen sefick <ssefick@gmail.com> wrote:> why don't you give us a snippett of your data and then we may be able to > help (read the posting guide) > > > On Mon, Jul 14, 2008 at 6:04 PM, Zroutik Zroutik <zroutik@gmail.com> > wrote: > >> Nope, this assigns the 26th, 28th, 30th anf 32nd point of the total >> nrow(matrix) number of points. This does not assign the points (or places of >> the x-axis) with such a rowname. >> >> row number <-> row name >> 1:nrow(matrix) <-> rowname(matrix[1]) .. rowname(matrix[nrow(matrix)]) >> >> >> I try to rephrase my question: how do you plot a curve into a plot when >> the x-axis isn't the rownumbers, but each row is a real x-value (e.g. >> 35.23)? >> >> >> p.s. there is a mistake in my original (first) email. Instead "at=NULL" >> should be "at=Labels" (otherwise there is an error message). Sorry for >> confusion. >> >> >> On Mon, Jul 14, 2008 at 5:53 PM, stephen sefick <ssefick@gmail.com> >> wrote: >> >>> try at=seq(from=26, to=32, by=2) in the axis statment >>> hope this helps >>> >>> Stephen >>> >>> On Mon, Jul 14, 2008 at 11:21 AM, Zroutik Zroutik <zroutik@gmail.com> >>> wrote: >>> >>>> Dear R-users, >>>> >>>> I'm tackling with a problem which causing me a head-ache for a long >>>> time. I >>>> would like to create a nice x-axis to my plots, but I do not know how to >>>> implement the method. >>>> >>>> Imagine a matrix where you have rownames real numbers -- these rownames >>>> should be written in the x-axis nicely. I could not find any way how. >>>> >>>> I'll describe what I'm doing now: >>>> I have a matrix where each column is an independent curve (number of the >>>> columns 3-4). The rownames are the x-axis, and the names are real >>>> numbers >>>> (converted to chars, of course). I find the max and the min among the >>>> values >>>> in the matrix (for the y-axis) and I'm creating an empty plot. x-axis is >>>> c(0, nrow(matrix)). Now, I'm creating the x-axis labels >>>> >>>> Labels <- seq(1, nrow(matrix), by = 100) >>>> axis(1, at = NULL, labels = rownames(matrix)[Labels]) >>>> >>>> At this point I'd like to have instead of "24.12333 26.45667 28.79 >>>> 31.12333 33.45667" at the x-axis, an optimally placed ticks at let's >>>> say >>>> "26 28 30 32" -- this is what I cannot achieve. >>>> >>>> Afterwards I'm plotting the curves in different colours. I know that the >>>> x-values are accessed by the number of their row and not rowname. >>>> >>>> Anybody could point me into some direction, please? Thank you upfront! >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________________________ >>>> R-help@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. >>>> >>> >>> >>> >>> -- >>> Let's not spend our time and resources thinking about things that are so >>> little or so large that all they really do for us is puff us up and make us >>> feel like gods. We are mammals, and have not exhausted the annoying little >>> problems of being mammals. >>> >>> -K. Mullis >> >> >> > > > -- > Let's not spend our time and resources thinking about things that are so > little or so large that all they really do for us is puff us up and make us > feel like gods. We are mammals, and have not exhausted the annoying little > problems of being mammals. > > -K. Mullis >[[alternative HTML version deleted]]