Benoit Boulinguiez
2009-Sep-09 15:24 UTC
[R] ggplot2: mixing colour and linetype in geom_line
Hi all, I try to represent a multiple curve graphic where the x-axis is the temperature and the different y-axes are the different X (X22,X43,X44...) some X corresponds to the same molecule (22 and 44 are for CO2 for instance) so I use the same colour for them. I wanna mix the linetype with the colour to be able to visually see the difference between X43 and X45 The best I have done up to now is this code but it crashes with :"Error in col2rgb(colour, TRUE) : invalid color name 'AA'" if I skip the linetype in geom it works perfectly of course THT_N2_ATGMS_plot<-ggplot(THT_N2_ATGMS,aes(x=Temp)) + # geom_line(aes(y=X22,colour="CO2")) + # geom_line(aes(y=X44,colour="CO2")) + geom_line(aes(y=X43,colour="AA",linetype="43")) + geom_line(aes(y=X45,colour="AA",linetype="45")) data set looks like: Temp X22 X43 X44 X45 X48 X58 X60 1 25.97650 4.62e-12 6.14e-11 3.93e-10 1.29e-11 2.05e-10 6.78e-12 9.31e-12 2 26.57025 4.73e-12 6.11e-11 3.91e-10 1.28e-11 2.05e-10 6.80e-12 9.43e-12 3 27.16400 4.62e-12 6.04e-11 3.91e-10 1.27e-11 2.05e-10 6.87e-12 9.28e-12 4 27.75650 4.57e-12 6.06e-11 3.90e-10 1.27e-11 2.03e-10 6.79e-12 9.26e-12 5 28.34892 4.64e-12 6.01e-11 3.89e-10 1.28e-11 2.03e-10 6.75e-12 9.18e-12 6 28.94142 4.71e-12 6.01e-11 3.88e-10 1.27e-11 2.02e-10 6.67e-12 9.24e-12 7 29.53125 4.70e-12 5.93e-11 3.87e-10 1.27e-11 2.02e-10 6.65e-12 9.20e-12 8 30.12233 4.64e-12 5.91e-11 3.86e-10 1.26e-11 2.01e-10 6.63e-12 9.11e-12 9 30.71483 4.71e-12 5.91e-11 3.85e-10 1.25e-11 2.01e-10 6.59e-12 9.17e-12 10 31.30983 4.51e-12 5.88e-11 3.85e-10 1.23e-11 2.00e-10 6.54e-12 9.00e-12 11 31.90233 4.52e-12 5.80e-11 3.85e-10 1.23e-11 1.99e-10 6.60e-12 9.09e-12 12 32.49475 4.47e-12 5.80e-11 3.83e-10 1.24e-11 1.99e-10 6.57e-12 8.95e-12 13 33.08458 4.58e-12 5.79e-11 3.83e-10 1.23e-11 1.98e-10 6.57e-12 9.02e-12 14 33.67575 4.56e-12 5.75e-11 3.82e-10 1.22e-11 1.97e-10 6.43e-12 8.89e-12 15 34.26558 4.53e-12 5.74e-11 3.80e-10 1.23e-11 1.97e-10 6.42e-12 8.97e-12 16 34.85933 4.54e-12 5.70e-11 3.80e-10 1.22e-11 1.96e-10 6.48e-12 8.93e-12 17 35.45183 4.55e-12 5.67e-11 3.79e-10 1.21e-11 1.96e-10 6.38e-12 8.86e-12 18 36.04683 4.54e-12 5.66e-11 3.78e-10 1.20e-11 1.95e-10 6.37e-12 8.90e-12 19 36.63933 4.53e-12 5.61e-11 3.77e-10 1.19e-11 1.94e-10 6.45e-12 8.85e-12 20 37.23042 4.50e-12 5.57e-11 3.77e-10 1.21e-11 1.94e-10 6.35e-12 8.82e-12 21 37.82417 4.55e-12 5.58e-11 3.76e-10 1.19e-11 1.94e-10 6.29e-12 8.86e-12 22 38.41400 4.57e-12 5.57e-11 3.75e-10 1.20e-11 1.92e-10 6.30e-12 8.80e-12 Regards/Cordialement ------------- Benoit Boulinguiez Ph.D student Ecole de Chimie de Rennes (ENSCR) Bureau 1.20 Equipe CIP UMR CNRS 6226 "Sciences Chimiques de Rennes" Avenue du Général Leclerc CS 50837 35708 Rennes CEDEX 7 Tel 33 (0)2 23 23 80 83 Fax 33 (0)2 23 23 81 20 <http://www.ensc-rennes.fr/> http://www.ensc-rennes.fr/ [[alternative HTML version deleted]]
Felipe Carrillo
2009-Sep-09 18:39 UTC
[R] ggplot2: mixing colour and linetype in geom_line
Is this what you want? x <- structure(list(Temp = c(25.9765, 26.57025, 27.164, 27.7565, 28.34892, 28.94142, 29.53125, 30.12233, 30.71483, 31.30983, 31.90233, 32.49475, 33.08458, 33.67575, 34.26558, 34.85933, 35.45183, 36.04683, 36.63933, 37.23042, 37.82417, 38.414), X22 = c(4.62e-12, 4.73e-12, 4.62e-12, 4.57e-12, 4.64e-12, 4.71e-12, 4.7e-12, 4.64e-12, 4.71e-12, 4.51e-12, 4.52e-12, 4.47e-12, 4.58e-12, 4.56e-12, 4.53e-12, 4.54e-12, 4.55e-12, 4.54e-12, 4.53e-12, 4.5e-12, 4.55e-12, 4.57e-12), X43 = c(6.14e-11, 6.11e-11, 6.04e-11, 6.06e-11, 6.01e-11, 6.01e-11, 5.93e-11, 5.91e-11, 5.91e-11, 5.88e-11, 5.8e-11, 5.8e-11, 5.79e-11, 5.75e-11, 5.74e-11, 5.7e-11, 5.67e-11, 5.66e-11, 5.61e-11, 5.57e-11, 5.58e-11, 5.57e-11 ), X44 = c(3.93e-10, 3.91e-10, 3.91e-10, 3.9e-10, 3.89e-10, 3.88e-10, 3.87e-10, 3.86e-10, 3.85e-10, 3.85e-10, 3.85e-10, 3.83e-10, 3.83e-10, 3.82e-10, 3.8e-10, 3.8e-10, 3.79e-10, 3.78e-10, 3.77e-10, 3.77e-10, 3.76e-10, 3.75e-10), X45 = c(1.29e-11, 1.28e-11, 1.27e-11, 1.27e-11, 1.28e-11, 1.27e-11, 1.27e-11, 1.26e-11, 1.25e-11, 1.23e-11, 1.23e-11, 1.24e-11, 1.23e-11, 1.22e-11, 1.23e-11, 1.22e-11, 1.21e-11, 1.2e-11, 1.19e-11, 1.21e-11, 1.19e-11, 1.2e-11), X48 = c(2.05e-10, 2.05e-10, 2.05e-10, 2.03e-10, 2.03e-10, 2.02e-10, 2.02e-10, 2.01e-10, 2.01e-10, 2e-10, 1.99e-10, 1.99e-10, 1.98e-10, 1.97e-10, 1.97e-10, 1.96e-10, 1.96e-10, 1.95e-10, 1.94e-10, 1.94e-10, 1.94e-10, 1.92e-10), X58 = c(6.78e-12, 6.8e-12, 6.87e-12, 6.79e-12, 6.75e-12, 6.67e-12, 6.65e-12, 6.63e-12, 6.59e-12, 6.54e-12, 6.6e-12, 6.57e-12, 6.57e-12, 6.43e-12, 6.42e-12, 6.48e-12, 6.38e-12, 6.37e-12, 6.45e-12, 6.35e-12, 6.29e-12, 6.3e-12), X60 = c(9.31e-12, 9.43e-12, 9.28e-12, 9.26e-12, 9.18e-12, 9.24e-12, 9.2e-12, 9.11e-12, 9.17e-12, 9e-12, 9.09e-12, 8.95e-12, 9.02e-12, 8.89e-12, 8.97e-12, 8.93e-12, 8.86e-12, 8.9e-12, 8.85e-12, 8.82e-12, 8.86e-12, 8.8e-12)), .Names = c("Temp", "X22", "X43", "X44", "X45", "X48", "X58", "X60"), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22")) attach(x) xmelt <- melt(x,id.vars="Temp");head(xmelt) qplot(Temp,value,colour=variable,linetype=variable,data=xmelt,geom="line") Felipe D. Carrillo Supervisory Fishery Biologist Department of the Interior US Fish & Wildlife Service California, USA --- On Wed, 9/9/09, Benoit Boulinguiez <benoit.boulinguiez at ensc-rennes.fr> wrote:> From: Benoit Boulinguiez <benoit.boulinguiez at ensc-rennes.fr> > Subject: [R] ggplot2: mixing colour and linetype in geom_line > To: r-help at r-project.org > Date: Wednesday, September 9, 2009, 8:24 AM > Hi all, > > I try to represent a multiple curve graphic where the > x-axis is the > temperature and the different y-axes are the different X > (X22,X43,X44...) > some X corresponds to the same molecule (22 and 44 are for > CO2 for instance) > so I use the same colour for them. > > I wanna mix the linetype with the colour to be able to > visually see the > difference between X43 and X45 > The best I have done up to now is this code but it crashes > with :"Error in > col2rgb(colour, TRUE) : invalid color name 'AA'" > > if I skip the linetype in geom it works perfectly of > course > > > THT_N2_ATGMS_plot<-ggplot(THT_N2_ATGMS,aes(x=Temp)) + > > # geom_line(aes(y=X22,colour="CO2")) + > # geom_line(aes(y=X44,colour="CO2")) + > > geom_line(aes(y=X43,colour="AA",linetype="43")) + > geom_line(aes(y=X45,colour="AA",linetype="45")) > > > > data set looks like: > ? ? ? ???Temp? ? > ? X22? ? ? X43? ? ? > X44? ? ? X45? ? ? X48? > ? ? X58? ? ? X60 > 1? ? 25.97650 4.62e-12 6.14e-11 3.93e-10 1.29e-11 > 2.05e-10 6.78e-12 9.31e-12 > 2? ? 26.57025 4.73e-12 6.11e-11 3.91e-10 1.28e-11 > 2.05e-10 6.80e-12 9.43e-12 > 3? ? 27.16400 4.62e-12 6.04e-11 3.91e-10 1.27e-11 > 2.05e-10 6.87e-12 9.28e-12 > 4? ? 27.75650 4.57e-12 6.06e-11 3.90e-10 1.27e-11 > 2.03e-10 6.79e-12 9.26e-12 > 5? ? 28.34892 4.64e-12 6.01e-11 3.89e-10 1.28e-11 > 2.03e-10 6.75e-12 9.18e-12 > 6? ? 28.94142 4.71e-12 6.01e-11 3.88e-10 1.27e-11 > 2.02e-10 6.67e-12 9.24e-12 > 7? ? 29.53125 4.70e-12 5.93e-11 3.87e-10 1.27e-11 > 2.02e-10 6.65e-12 9.20e-12 > 8? ? 30.12233 4.64e-12 5.91e-11 3.86e-10 1.26e-11 > 2.01e-10 6.63e-12 9.11e-12 > 9? ? 30.71483 4.71e-12 5.91e-11 3.85e-10 1.25e-11 > 2.01e-10 6.59e-12 9.17e-12 > 10???31.30983 4.51e-12 5.88e-11 3.85e-10 > 1.23e-11 2.00e-10 6.54e-12 9.00e-12 > 11???31.90233 4.52e-12 5.80e-11 3.85e-10 > 1.23e-11 1.99e-10 6.60e-12 9.09e-12 > 12???32.49475 4.47e-12 5.80e-11 3.83e-10 > 1.24e-11 1.99e-10 6.57e-12 8.95e-12 > 13???33.08458 4.58e-12 5.79e-11 3.83e-10 > 1.23e-11 1.98e-10 6.57e-12 9.02e-12 > 14???33.67575 4.56e-12 5.75e-11 3.82e-10 > 1.22e-11 1.97e-10 6.43e-12 8.89e-12 > 15???34.26558 4.53e-12 5.74e-11 3.80e-10 > 1.23e-11 1.97e-10 6.42e-12 8.97e-12 > 16???34.85933 4.54e-12 5.70e-11 3.80e-10 > 1.22e-11 1.96e-10 6.48e-12 8.93e-12 > 17???35.45183 4.55e-12 5.67e-11 3.79e-10 > 1.21e-11 1.96e-10 6.38e-12 8.86e-12 > 18???36.04683 4.54e-12 5.66e-11 3.78e-10 > 1.20e-11 1.95e-10 6.37e-12 8.90e-12 > 19???36.63933 4.53e-12 5.61e-11 3.77e-10 > 1.19e-11 1.94e-10 6.45e-12 8.85e-12 > 20???37.23042 4.50e-12 5.57e-11 3.77e-10 > 1.21e-11 1.94e-10 6.35e-12 8.82e-12 > 21???37.82417 4.55e-12 5.58e-11 3.76e-10 > 1.19e-11 1.94e-10 6.29e-12 8.86e-12 > 22???38.41400 4.57e-12 5.57e-11 3.75e-10 > 1.20e-11 1.92e-10 6.30e-12 8.80e-12 > > > > Regards/Cordialement > > ------------- > Benoit Boulinguiez > Ph.D student > Ecole de Chimie de Rennes (ENSCR) Bureau 1.20 > Equipe CIP UMR CNRS 6226 "Sciences Chimiques de Rennes" > Avenue du G?n?ral Leclerc > CS 50837 > 35708 Rennes CEDEX 7 > Tel 33 (0)2 23 23 80 83 > Fax 33 (0)2 23 23 81 20 > <http://www.ensc-rennes.fr/> http://www.ensc-rennes.fr/ > > > > ??? [[alternative HTML version deleted]] > > > -----Inline Attachment Follows----- > > ______________________________________________ > 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. >
Matthieu Dubois
2009-Sep-10 19:36 UTC
[R] ggplot2: mixing colour and linetype in geom_line
Hi Benoit, I'm not a specialist of ggplot2, but I will try to help. You may obtain more --interesting-- answers on the ggplot2 mailing list. This said, let's go. To solve your problem, I would suggest to 1. change the form of the data frame (using the reshape library) in order to have one variable for Temp, one for the different Xs, and one for their y values. 2. add a new variable for the different molecules. 3. then plot # change the format of the data frame library(reshape) mdat <- melt(THT_N2_ATGMS, id="Temp") # add the molecule variable mdat$mol <- 'other' mdat$mol[mdat$variable %in% c('X22','X44')] <- 'CO2' mdat$mol[mdat$variable %in% c('X43','X45')] <- 'AA' #plot library(ggplot2) p <- ggplot(data=mdat, aes(x=Temp, y=value, colour=mol, linetype=variable)) + geom_line() p that's it. HTH Matthieu
Reasonably Related Threads
- post hoc in repeated measures of anova
- how to identify values from a column of a dataframe, and insert them in other data.frame with the corresponding id?
- How to do indexing after splitting my data-frame?
- Reading a file with read.csv: two character rows not interpreted as I hope
- analyse tab delimited textfile microarray data(help)