It would be much better if you had pasted the original .csv file into your message or read the file in R and used dput() to send us the result. It looks like you have a lower triangular matrix and I had to do a little editing to get it to work. I am showing the steps, but commenting them out since you will only need the command following dput(mcdf2). The first row should end with 41848 and every row show begin with #.
# dta <- "rows 41540 41442 41599 41709 41823 41806 41837 41898 41848 # 41540 NA # 41442 0.001 # 41599 0.002 0.001 # 41709 0.004 0.003 0.003 # 41823 0.002 0.001 0.002 0.001 # 41806 0.004 0.004 0.005 0.006 0.005 # 41837 0.004 0.004 0.005 0.006 0.005 0.001 # 41898 0.004 0.004 0.005 0.006 0.005 0.001 0.001 # 41848 0.005 0.004 0.005 0.007 0.005 0.001 0.001 0.001 NA" # mcdf<-read.table(text=dta, header=TRUE, fill=TRUE) # mcdf # rownames(mcdf) <- mcdf$rows # mcdf <- mcdf[, -1] # mcdf2 <- as.dist(mcdf) # mcdf2 # dput(mcdf2) mcdf2 <- structure(c(0.001, 0.002, 0.004, 0.002, 0.004, 0.004, 0.004, 0.005, 0.001, 0.003, 0.001, 0.004, 0.004, 0.004, 0.004, 0.003, 0.002, 0.005, 0.005, 0.005, 0.005, 0.001, 0.006, 0.006, 0.006, 0.007, 0.005, 0.005, 0.005, 0.005, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001), Labels = c("41540", "41442", "41599", "41709", "41823", "41806", "41837", "41898", "41848"), Size = 9L, call = as.dist.default(m = mcdf), class = "dist", Diag = FALSE, Upper = FALSE) Now mcdf2 is a lower triangular distance matrix: str(mcdf2) # 'dist' num [1:36] 0.001 0.002 0.004 0.002 0.004 0.004 0.004 0.005 0.001 0.003 ... # - attr(*, "Labels")= chr [1:9] "41540" "41442" "41599" "41709" ... # - attr(*, "Size")= int 9 # - attr(*, "call")= language as.dist.default(m = mcdf) # - attr(*, "Diag")= logi FALSE # - attr(*, "Upper")= logi FALSE The days are stored as an attribute called "Labels" so we need to extract them and compute the differences between them: days <- as.numeric(attributes(mcdf2)$Labels) daydiff <- dist(days, method="manhattan") daydiff # 1 2 3 4 5 6 7 8 # 2 98 # 3 59 157 # 4 169 267 110 # 5 283 381 224 114 # 6 266 364 207 97 17 # 7 297 395 238 128 14 31 # 8 358 456 299 189 75 92 61 # 9 308 406 249 139 25 42 11 50 Now we can plot. I've attached a copy: plot(daydiff, mcdf2) You need to read the following manual pages to understand what we are doing: ?read.table ?rownames ?as.dist ?dput ?as.numeric ?attributes ?dist ?plot ?Extract (to understand what the "$" is all about. ---------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77843-4352 ----Original Message----- From: R-help <r-help-boun...@r-project.org> On Behalf Of Jim Lemon Sent: Thursday, November 1, 2018 1:56 AM To: myriam.croz...@gmail.com Cc: r-help mailing list <r-help@r-project.org> Subject: Re: [R] Plot a matrix Hi Myriam, This may not be the ideal way to do this, but I think it works: mcdf<-read.table(text="41540 41540 41442 41599 41709 41823 41806 41837 41898 41848 41442 0.001 41599 0.002 0.001 41709 0.004 0.003 0.003 41823 0.002 0.001 0.002 0.001 41806 0.004 0.004 0.005 0.006 0.005 41837 0.004 0.004 0.005 0.006 0.005 0.001 41898 0.004 0.004 0.005 0.006 0.005 0.001 0.001 41848 0.005 0.004 0.005 0.007 0.005 0.001 0.001 0.001", fill=TRUE) nrows<-nrow(mcdf) ncols<-ncol(mcdf) mcdf2<-mcdf for(row in 2:nrows) { for(col in 2:ncols) { if(!is.na(mcdf2[row,col])) mcdf2[row,col]<-mcdf[row,1]-mcdf[1,col] } } plot(0,xlim=range(as.numeric(unlist(mcdf2[2:nrows,2:ncols])),na.rm=TRUE), ylim=range(as.numeric(unlist(mcdf[2:nrows,2:ncols])),na.rm=TRUE), xlab="Difference in days",ylab="Distance",type="n") for(row in 2:nrows) { for(col in 2:ncols) { if(!is.na(mcdf2[row,col])) points(mcdf2[row,col],mcdf[row,col]) } } Jim On Thu, Nov 1, 2018 at 5:21 PM Myriam Croze <myriam.croz...@gmail.com> wrote: > > Hello! > > I need your help to plot my data. I have a file .csv which looks like that: > > 41540 41540 41442 41599 41709 41823 41806 41837 41898 41848 > 41442 0.001 > 41599 0.002 0.001 > 41709 0.004 0.003 0.003 > 41823 0.002 0.001 0.002 0.001 > 41806 0.004 0.004 0.005 0.006 0.005 > 41837 0.004 0.004 0.005 0.006 0.005 0.001 > 41898 0.004 0.004 0.005 0.006 0.005 0.001 0.001 > 41848 0.005 0.004 0.005 0.007 0.005 0.001 0.001 0.001 > > It is a matrix of distance with in the 1st column and row the days of > sampling and then the distance values. > I would like to do a scatterplot of the data with for the y axis the > distance values and for the x axis the difference between the days of > sampling (e.g. x = |41442-41540| and y = 0.001). > Do you know how I could do that with r? > Thanks in advance for your help. > > Best regards, > Myriam > > -- > Myriam Croze > Post-doctorante > Division of EcoScience, > Ewha Womans University > Seoul, South Korea > > Email: myriam.croz...@gmail.com > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.