Re: [R] Plot a Matrix as an Image with ggplot
You are good! Many thanks Alex From: Dennis Murphy djmu...@gmail.com Cc: R help R-help@r-project.org Sent: Saturday, February 16, 2013 3:11 AM Subject: Re: [R] Plot a Matrix as an Image with ggplot Hi: See if the following works for you: library(reshape2) library(ggplot2) tdm - melt(testData) ggplot(tdm, aes(x = Var2, y = Var1, fill = factor(value))) + labs(x = MHz, y = Threshold, fill = Value) + geom_raster() + scale_fill_manual(breaks = levels(factor(tdm$value)), values = c(white, black)) + theme(plot.background = element_rect(fill = grey90), legend.background = element_rect(fill = grey90)) + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) It was necessary to create a different plot background color because you wanted to remove the padding, which blended much of the plot boundary with the original white background, and had to do something similar to the legend background so that you could see the white legend box. The expand = c(0, 0) argument to the two scale functions answers your second question, and converting value from numeric to vector answers the first. Dennis You were right, the following two work testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(Var1=c(1:5),Var2=c(1:5))) ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) + geom_raster() + scale_fill_gradient(low=#FF, high=#00) still there are two minor unresolved issues. a. How to reduce the extra space in the plot between legend and the tiles? b. How to make color bar depict only the two values of the game, 0 and 1 , instead of 0, 0.25, 0.50, 0.75, 1? I would like to thank you in advanec for your help Regards Alex - Original Message - From: Dennis Murphy djmu...@gmail.com Cc: Sent: Friday, February 15, 2013 10:19 AM Subject: Re: [R] Plot a Matrix as an Image with ggplot Your aesthetic is fill, not color. Change scale_color_gradient to scale_fill_gradient and you'll get what you expect. D. Hi, thanks I changed slightly the code to be reproducible from everyone . I have tried ggplot but I need a bit of help to tweak it a bit So you can run the following in your computer testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(1:5,1:5)) p-ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) + geom_raster() p What I want to improve is a: make the colorbar so only two specific colors lets say black and white and only two values 0 and 1 and somewhere the string as title of the color bar text to appear. I have tried something like p+ scale_color_gradient(low=red,high=blue) Fehler in unit(tic_pos.c, mm) : 'x' and 'units' must have length 0 ggplot(melt(testData), aes(Var2,Var1, fill=value,colorbin=2))+xlab(MHz) + ylab(Threshold) + geom_raster() but this did not affect colorbar entries. b. reduce/remove the grayish border that appears between the legend and the image plot Could you please help me with these two? Regards Alex From: John Kane jrkrid...@inbox.com Sent: Thursday, February 14, 2013 4:35 PM Subject: RE: [R] Plot a Matrix as an Image with ggplot The R-help list is rather picky about what attached. None of your attachments arrived. The str() info is useful but please supply some sample data The easiest way to supply data is to use the dput() function. Example with your file named testfile: dput(testfile) Then copy the output and paste into your email. For large data sets, you can just supply a representative sample. Usually, dput(head(testfile, 100)) will be sufficient. How are you writing the code/or what format is the original email. Your code in the body of the text is badly messed up -- you probably need to post only in text. HTML etc is automatically dropped. John Kane Kingston ON Canada -Original Message- Sent: Thu, 14 Feb 2013 07:15:05 -0800 (PST) To: r-help@r-project.org Subject: [R] Plot a Matrix as an Image with ggplot Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile
Re: [R] Plot a Matrix as an Image with ggplot
You were right, the following two work testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(Var1=c(1:5),Var2=c(1:5))) ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) + geom_raster() + scale_fill_gradient(low=#FF, high=#00) still there are two minor unresolved issues. a. How to reduce the extra space in the plot between legend and the tiles? b. How to make color bar depict only the two values of the game, 0 and 1 , instead of 0, 0.25, 0.50, 0.75, 1? I would like to thank you in advanec for your help Regards Alex - Original Message - From: Dennis Murphy djmu...@gmail.com To: Alaios ala...@yahoo.com Cc: Sent: Friday, February 15, 2013 10:19 AM Subject: Re: [R] Plot a Matrix as an Image with ggplot Your aesthetic is fill, not color. Change scale_color_gradient to scale_fill_gradient and you'll get what you expect. D. On Thu, Feb 14, 2013 at 11:31 PM, Alaios ala...@yahoo.com wrote: Hi, thanks I changed slightly the code to be reproducible from everyone . I have tried ggplot but I need a bit of help to tweak it a bit So you can run the following in your computer testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(1:5,1:5)) p-ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) + geom_raster() p What I want to improve is a: make the colorbar so only two specific colors lets say black and white and only two values 0 and 1 and somewhere the string as title of the color bar text to appear. I have tried something like p+ scale_color_gradient(low=red,high=blue) Fehler in unit(tic_pos.c, mm) : 'x' and 'units' must have length 0 ggplot(melt(testData), aes(Var2,Var1, fill=value,colorbin=2))+xlab(MHz) + ylab(Threshold) + geom_raster() but this did not affect colorbar entries. b. reduce/remove the grayish border that appears between the legend and the image plot Could you please help me with these two? Regards Alex From: John Kane jrkrid...@inbox.com To: Alaios ala...@yahoo.com; R help r-help@r-project.org Sent: Thursday, February 14, 2013 4:35 PM Subject: RE: [R] Plot a Matrix as an Image with ggplot The R-help list is rather picky about what attached. None of your attachments arrived. The str() info is useful but please supply some sample data The easiest way to supply data is to use the dput() function. Example with your file named testfile: dput(testfile) Then copy the output and paste into your email. For large data sets, you can just supply a representative sample. Usually, dput(head(testfile, 100)) will be sufficient. How are you writing the code/or what format is the original email. Your code in the body of the text is badly messed up -- you probably need to post only in text. HTML etc is automatically dropped. John Kane Kingston ON Canada -Original Message- From: ala...@yahoo.com Sent: Thu, 14 Feb 2013 07:15:05 -0800 (PST) To: r-help@r-project.org Subject: [R] Plot a Matrix as an Image with ggplot Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile pattern let's say with black tiles zeros and white tiles black where a color bar will depicting that black means zero and white one. To help you with my code you will find attached the three items I have discussed here, the matrix, the x and the y labels. Could you please help me with that? Alex FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks orcas on your desktop! Check it out at http://www.inbox.com/marineaquarium __ 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. __ 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.
Re: [R] Plot a Matrix as an Image with ggplot
Hi: See if the following works for you: library(reshape2) library(ggplot2) tdm - melt(testData) ggplot(tdm, aes(x = Var2, y = Var1, fill = factor(value))) + labs(x = MHz, y = Threshold, fill = Value) + geom_raster() + scale_fill_manual(breaks = levels(factor(tdm$value)), values = c(white, black)) + theme(plot.background = element_rect(fill = grey90), legend.background = element_rect(fill = grey90)) + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) It was necessary to create a different plot background color because you wanted to remove the padding, which blended much of the plot boundary with the original white background, and had to do something similar to the legend background so that you could see the white legend box. The expand = c(0, 0) argument to the two scale functions answers your second question, and converting value from numeric to vector answers the first. Dennis On Fri, Feb 15, 2013 at 3:24 PM, Alaios ala...@yahoo.com wrote: You were right, the following two work testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(Var1=c(1:5),Var2=c(1:5))) ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) +geom_raster() + scale_fill_gradient(low=#FF, high=#00) still there are two minor unresolved issues. a. How to reduce the extra space in the plot between legend and the tiles? b. How to make color bar depict only the two values of the game, 0 and 1 , instead of 0, 0.25, 0.50, 0.75, 1? I would like to thank you in advanec for your help Regards Alex - Original Message - From: Dennis Murphy djmu...@gmail.com To: Alaios ala...@yahoo.com Cc: Sent: Friday, February 15, 2013 10:19 AM Subject: Re: [R] Plot a Matrix as an Image with ggplot Your aesthetic is fill, not color. Change scale_color_gradient to scale_fill_gradient and you'll get what you expect. D. On Thu, Feb 14, 2013 at 11:31 PM, Alaios ala...@yahoo.com wrote: Hi, thanks I changed slightly the code to be reproducible from everyone . I have tried ggplot but I need a bit of help to tweak it a bit So you can run the following in your computer testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(1:5,1:5)) p-ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) +geom_raster() p What I want to improve is a: make the colorbar so only two specific colors lets say black and white and only two values 0 and 1 and somewhere the string as title of the color bar text to appear. I have tried something like p+ scale_color_gradient(low=red,high=blue) Fehler in unit(tic_pos.c, mm) : 'x' and 'units' must have length 0 ggplot(melt(testData), aes(Var2,Var1, fill=value,colorbin=2))+xlab(MHz) + ylab(Threshold) +geom_raster() but this did not affect colorbar entries. b. reduce/remove the grayish border that appears between the legend and the image plot Could you please help me with these two? Regards Alex From: John Kane jrkrid...@inbox.com To: Alaios ala...@yahoo.com; R help r-help@r-project.org Sent: Thursday, February 14, 2013 4:35 PM Subject: RE: [R] Plot a Matrix as an Image with ggplot The R-help list is rather picky about what attached. None of your attachments arrived. The str() info is useful but please supply some sample data The easiest way to supply data is to use the dput() function. Example with your file named testfile: dput(testfile) Then copy the output and paste into your email. For large data sets, you can just supply a representative sample. Usually, dput(head(testfile, 100)) will be sufficient. How are you writing the code/or what format is the original email. Your code in the body of the text is badly messed up -- you probably need to post only in text. HTML etc is automatically dropped. John Kane Kingston ON Canada -Original Message- From: ala...@yahoo.com Sent: Thu, 14 Feb 2013 07:15:05 -0800 (PST) To: r-help@r-project.org Subject: [R] Plot a Matrix as an Image with ggplot Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile
[R] Plot a Matrix as an Image with ggplot
Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile pattern let's say with black tiles zeros and white tiles black where a color bar will depicting that black means zero and white one. To help you with my code you will find attached the three items I have discussed here, the matrix, the x and the y labels. Could you please help me with that? Alex__ 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.
Re: [R] Plot a Matrix as an Image with ggplot
The R-help list is rather picky about what attached. None of your attachments arrived. The str() info is useful but please supply some sample data The easiest way to supply data is to use the dput() function. Example with your file named testfile: dput(testfile) Then copy the output and paste into your email. For large data sets, you can just supply a representative sample. Usually, dput(head(testfile, 100)) will be sufficient. How are you writing the code/or what format is the original email. Your code in the body of the text is badly messed up -- you probably need to post only in text. HTML etc is automatically dropped. John Kane Kingston ON Canada -Original Message- From: ala...@yahoo.com Sent: Thu, 14 Feb 2013 07:15:05 -0800 (PST) To: r-help@r-project.org Subject: [R] Plot a Matrix as an Image with ggplot Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile pattern let's say with black tiles zeros and white tiles black where a color bar will depicting that black means zero and white one. To help you with my code you will find attached the three items I have discussed here, the matrix, the x and the y labels. Could you please help me with that? Alex FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks orcas on your desktop! __ 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.
Re: [R] Plot a Matrix as an Image with ggplot
Hi, thanks I changed slightly the code to be reproducible from everyone . I have tried ggplot but I need a bit of help to tweak it a bit So you can run the following in your computer testData-matrix(data=round(runif(25)),nrow=5,ncol=5,dimnames=list(1:5,1:5)) p-ggplot(melt(testData), aes(Var2,Var1, fill=value))+xlab(MHz) + ylab(Threshold) + geom_raster() p What I want to improve is a: make the colorbar so only two specific colors lets say black and white and only two values 0 and 1 and somewhere the string as title of the color bar text to appear. I have tried something like p+ scale_color_gradient(low=red,high=blue) Fehler in unit(tic_pos.c, mm) : 'x' and 'units' must have length 0 ggplot(melt(testData), aes(Var2,Var1, fill=value,colorbin=2))+xlab(MHz) + ylab(Threshold) + geom_raster() but this did not affect colorbar entries. b. reduce/remove the grayish border that appears between the legend and the image plot Could you please help me with these two? Regards Alex From: John Kane jrkrid...@inbox.com To: Alaios ala...@yahoo.com; R help r-help@r-project.org Sent: Thursday, February 14, 2013 4:35 PM Subject: RE: [R] Plot a Matrix as an Image with ggplot The R-help list is rather picky about what attached. None of your attachments arrived. The str() info is useful but please supply some sample data The easiest way to supply data is to use the dput() function. Example with your file named testfile: dput(testfile) Then copy the output and paste into your email. For large data sets, you can just supply a representative sample. Usually, dput(head(testfile, 100)) will be sufficient. How are you writing the code/or what format is the original email. Your code in the body of the text is badly messed up -- you probably need to post only in text. HTML etc is automatically dropped. John Kane Kingston ON Canada -Original Message- From: ala...@yahoo.com Sent: Thu, 14 Feb 2013 07:15:05 -0800 (PST) To: r-help@r-project.org Subject: [R] Plot a Matrix as an Image with ggplot Dear all, I am trying to plot a matrix I have as an image str(matrixToPlot) num [1:21, 1:66] 0 0 0 0 0 0 0 0 0 0 . that contains only 0s and 1s, where the xlabel will be Labeled as str(xLabel) num [1:66] 1e+09 1e+09 1e+09 1e+09 1e+09 ... and the yLabels will be labeled as str(yLabel) num [1:21] -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 ... I have found on the internet that I can do something like that with ggplot2. For example you can run the following library(reshape2)library(ggplot2)m =matrix(rnorm(20),5)ggplot(melt(m),aes(Var1,Var2,fill=value))+geom_raster() What I see missing here is to get my matrix and transform it to a data frame with labels for x and y axis so as ggplot can print the values nice. If you get the idea this matrix will be printed as a two tile pattern let's say with black tiles zeros and white tiles black where a color bar will depicting that black means zero and white one. To help you with my code you will find attached the three items I have discussed here, the matrix, the x and the y labels. Could you please help me with that? Alex FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks orcas on your desktop! Check it out at http://www.inbox.com/marineaquarium __ 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.