[R] Color-coding data points in complex dotplot (ggplot2)
John Kane
jrkr|de@u @end|ng |rom gm@||@com
Sat Apr 6 14:23:15 CEST 2019
HI Michael
Your code runs but we did not get any attached figure. You might want
to try sending it as a .pdf file. They usually make it through the
spam filters
On Sat, 6 Apr 2019 at 08:09, Michael Eisenring <michael.eisenring using gmx.ch> wrote:
>
> Dear R-List members,
>
> I produced a dot plot (see attachment 1) on 6 different treatments (trees
> under 6 different conditions; in column " Location.Treatment " in my raw
> data). For each of these " Location.treatment" categories, I calculated a
> mean value and the SE for a specific compound (%CT).
>
> I am able to produce a plot where all the 6 treatments (in column "
> Location.Treatment") are separated (see code and Fig. 1) so that each of two
> "con" and "exp" treatments (in the column "treatment") are nested within one
> of the three locations (High, mid, low; in the column "Location") (see plot
> that the code produces). This is the plot structure I want.
>
> Now I would like to assign colors to the raw data points ( the "point cloud"
> next to each mean +SE value). Each of these points stems from a different
> "Genotype" and I would like to color code the points with regard to the
> genotypes (e.g. all points from Genotype A should be green, all points from
> Genotype B should be red etc.) I would like to use my own specified colors
> in the code (not the standard palette).
>
> I tried did the following (without success)
>
> 1. I added "aes(color=Genotype,.." into "geom_point(..)"
>
> 2. I added my specific colors to "scale_color_manual"
>
> scale_color_manual(labels=c("Control","Damaged"),values=c("red","black","#06
> 7c43","#89b651","#dc5b09","#e4a710","#92c5de","grey","#1d71b4","#7873a3"....
> ..
>
>
>
> However, if I do that my "nested" plot structure disappears (i.e. I cannot
> visually differentiate between "con" and "exp" treatments nested within mid
> /high/. See Fig. 2)
>
> Basically, all I want is to produce a plot that looks like the one from my
> actual code( Fig.1) but where the individual data points are colored
> according to "Genotypes"
>
> Below is my code and my raw data.
>
> Help is very much appreciated!
>
> Thanks a lot,
>
> Mike
>
>
>
> #CODE-----------------------------------------------------
>
> require(ggplot2)
>
>
>
> #REMOVE START FOR ANALYSIS
>
> dta<-subset(dta_complete,Time=="Stop")
>
> dta
>
>
>
> #Calculation of SE
>
> data_summary <- function(x) {
>
> m <- mean(x)
>
> ymin <- m-sd(x)/sqrt(length(x))
>
> ymax <- m+sd(x)/sqrt(length(x))
>
> return(c(y=m,ymin=ymin,ymax=ymax))
>
> }
>
>
>
> pd1 = position_dodge(0.5)
>
>
>
> plot_CT<- ggplot(dta, aes(x=Location, y=CT,
> colour=Treatment,shape=Treatment)) +
>
> stat_summary(fun.data=data_summary, position=pd1, geom="errorbar",
> width=0.05) +
>
> stat_summary(fun.data=data_summary, position=pd1, geom="point", size=2) +
>
> geom_point(position=position_jitterdodge(dodge.width=0.8, jitter.height=0,
> jitter.width=0.2),
>
> alpha=0.7) +
>
> labs(title="", x="", y = "CT (% dw)")+
>
> scale_color_manual(labels=c("Control",
> "Damaged"),values=c("red","black"),guide = guide_legend(reverse = TRUE) )+
>
> scale_shape_manual(labels=c("Control", "Damaged"),name="Treatment",values
> = c(16,16),guide = guide_legend(reverse = TRUE) )+
>
> #Style of background
>
> theme_classic()+
>
> #Change title
>
> theme(plot.title = element_text(color="black", size=17, face="bold"))+
>
> #Font size axis
>
> theme(axis.text=element_text(size=12),
>
> axis.title=element_text(size=17))+
>
> scale_x_discrete("Location",labels = c("Low", "Mid", "High"),expand=c(0.1,
> 0.5))+
>
> coord_flip()
>
>
>
> plot_CT
>
>
>
> #DATA-----------------------------------------------------------------------
> -----------------
>
> structure(list(Location = structure(c(2L, 3L, 1L, 2L, 3L, 1L,
>
> 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
>
> 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
>
> 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
>
> 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
>
> 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
>
> 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
>
> 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
>
> 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
>
> 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
>
> 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
>
> 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
>
> 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L), .Label = c("High", "Low", "Mid"
>
> ), class = "factor"), Treatment = structure(c(2L, 2L, 2L, 1L,
>
> 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L,
>
> 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L,
>
> 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
>
> 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L,
>
> 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L,
>
> 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L,
>
> 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L,
>
> 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L,
>
> 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L,
>
> 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L,
>
> 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L,
>
> 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("Con", "Exp"
>
> ), class = "factor"), Time = structure(c(2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Start", "Stop"
>
> ), class = "factor"), Genotype = structure(c(7L, 7L, 7L, 7L,
>
> 7L, 7L, 4L, 4L, 4L, 4L, 4L, 4L, 6L, 6L, 6L, 6L, 6L, 2L, 2L, 2L,
>
> 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 8L, 8L, 8L, 8L, 8L, 8L, 1L,
>
> 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 4L, 4L, 4L, 4L,
>
> 4L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 6L, 6L, 6L,
>
> 6L, 6L, 6L, 8L, 8L, 8L, 8L, 8L, 8L, 5L, 5L, 5L, 5L, 5L, 5L, 7L,
>
> 7L, 7L, 7L, 7L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L,
>
> 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L,
>
> 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L,
>
> 7L, 7L, 7L, 7L, 6L, 6L, 6L, 6L, 6L, 6L, 8L, 8L, 8L, 8L, 8L, 8L,
>
> 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L,
>
> 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L,
>
> 8L, 8L, 8L, 8L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("A", "B",
>
> "C", "D", "E", "F", "G", "H"), class = "factor"), Time.Location =
> structure(c(5L,
>
> 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 4L, 5L, 6L, 4L,
>
> 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L,
>
> 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L,
>
> 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L,
>
> 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L,
>
> 6L, 4L, 5L, 6L, 4L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L,
>
> 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L,
>
> 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L,
>
> 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L,
>
> 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L,
>
> 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L,
>
> 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 4L), .Label = c("StartHigh",
>
>
> "StartLow", "StartMid", "StopHigh", "StopLow", "StopMid"), class =
> "factor"),
>
> Location.Treatment = structure(c(4L, 6L, 2L, 3L, 5L, 1L,
>
> 4L, 6L, 2L, 3L, 5L, 1L, 4L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L,
>
> 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L,
>
> 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L,
>
> 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L,
>
> 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L,
>
> 5L, 1L, 4L, 6L, 2L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L,
>
> 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L,
>
> 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L,
>
> 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L,
>
> 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L,
>
> 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L,
>
> 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L, 2L, 3L, 5L, 1L, 4L, 6L,
>
> 2L, 3L, 5L, 1L), .Label = c("HighCon", "HighExp", "LowCon",
>
> "LowExp", "MidCon", "MidExp"), class = "factor"), CT = c(4.61538,
>
> 3.96739, 7.34797, 3.58108, 2.89655, 2.7993, 10.56122, 10.68396,
>
> 15.57252, 6.79245, 9.23469, 9.18, 1.1087, 4.26136, 1.14504,
>
> 2.20238, 3.15789, 9.54082, 11.05263, 15.84783, 10.48986,
>
> 12.62195, 15.12931, 5.51471, 8.20313, 11.85811, 3.38115,
>
> 7.5, 9.69512, 8.64407, 11.30597, 14.42797, 8.8125, 11.82482,
>
> 11.53061, 6.97674, 9.62766, 10.88028, 5.50403, 9.73558, 8.56419,
>
> 11.84524, 16.34892, 18.15789, 10.58036, 14.80932, 12.06081,
>
> 12.96992, 9.86014, 12.45652, 6.625, 6.93396, 9.10714, 3.66142,
>
> 9.19811, 10.88346, 2.88851, 6.85096, 10.27778, 8.29787, 13.00885,
>
> 14.38017, 7.5, 11.77734, 13.84615, 2.22772, 5.28, 5.25641,
>
> 1.0514, 2.73256, 4.11111, 11.39098, 11.10236, 13.00781, 7.95259,
>
> 10.15748, 13.16327, 8.90625, 10.04587, 13.625, 6.27049, 9.27966,
>
> 10.94037, 5.80189, 7.76978, 7.34266, 3.80952, 3.75, 7.29545,
>
> 10.45872, 16.83206, 5.95238, 7.70833, 10.92391, 11.03659,
>
> 14.39338, 14.88281, 8.22917, 11.63603, 14.7561, 11.9469,
>
> 14.65649, 16.84615, 8.37209, 13.27982, 13.69128, 7.77778,
>
> 12.59124, 12.32955, 7.00472, 8.41121, 7.22222, 9.43878, 10.33613,
>
> 14.16667, 9.60526, 8.77232, 11.91589, 7.01786, 12.29592,
>
> 11.83673, 8.55634, 11.17347, 12.68836, 2.7551, 6, 7.21374,
>
> 2.52101, 4.03846, 4.80634, 5.49569, 4.78723, 6.02273, 3.04511,
>
> 3.59244, 2.48239, 1.54412, 5.74219, 7.68595, 1.33065, 2.625,
>
> 4.42164, 9.66942, 11.875, 17.91667, 10.81731, 13.05288, 16.23853,
>
> 11.93662, 14.31818, 14.09396, 7.82374, 15.5042, 10.86207,
>
> 6.87023, 11.69492, 12.65957, 3.48684, 5.29018, 7.89474, 10.53309,
>
> 17.05479, 16.63866, 7.43119, 12.06522, 12.05607, 6.14865,
>
> 10.44, 14.69512, 9.24757, 9.04018, 12.38255, 2.22222, 3.90756,
>
> 5.85616, 2.23958, 3.8125, 3.01056, 11.60256, 12.22222, 11.8007,
>
> 7.76316, 10.08197, 12.78777, 9.20455, 12.1875, 16.59449,
>
> 6.82331, 10.91518, 11.5748)), row.names = 192:381, class = "data.frame")
>
>
>
>
>
>
>
>
>
>
>
> ______________________________________________
> R-help using 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.
--
John Kane
Kingston ON Canada
More information about the R-help
mailing list