Hi, I'm using ggplot2 to make a plot of the regression of a variable x (let
say, levels of depression),
on a variable y (let say, degree of social impairment),
by taking into account a binary factor (having had or not a past admission
to a psychiatric service),
and age of partecipants.
After some search in Internet I produced a code which is satisfying to me.
This site was very helpful: http://editerna.free.fr/wp/?p=266
However, I have a problem: no matter what I try, the figures always include
bluette and pink flamingo colours.
The figure is for an academic article, and I cannot afford the price of
having the plot printed in colours.
I've extracted the structure of the figure, and I understand that the
problem is in the scale_name "hue",
but I cannot figure out how to deal with it.
Any way to override the ggplot2 system of dealing with factors?
Here the codes and the sessionInfo
The code is a bit baroque, but this is the best I was able to do.
Thank you in advance,
Antonello Preti
######## code for exemplification
### the dataset
df <- structure(list(Social_impairment = c(2.83, 3.08, 2.75, 2.08,
2.92, 1.75, 3.5, 2.33, 2.91, 2.5, 3.25, 2.64, 3.25, 2.83, 2.08,
2.25, 2.17, 2.42, 2.58, 2.42, 2.58, 2.42, 3, 3, 2.83, 2.67, 3.58,
1.58, 2.83, 2.83, 2.67, 3.17, 2.42, 1.92, 2.92, 2.5, 2.42, 2.42,
2.58, 2.42, 3.33, 3, 3.17, 2.17, 2.58, 2.67, 2.58, 3.75, 2.5,
2.08, 2.25, 3.25, 3.17, 2.91, 2.08, 2.25, 3.08, 2.91, 3.08, 2.92,
1.83, 2.5, 2.5, 2.83, 2.67, 3.33, 2.83, 3.33, 2.92, 3), Levels_Depression c(1.3,
1.71, 3.08, 0.48, 0.51, 0.71, 1.37, 0.2, 1.21, 1.07, 2.8, 1.24,
0.46, 0.97, 0.81, 1.13, 1.58, 3.12, 1.8, 1.54, 1.02, 0.32, 2.63,
1.39, 1.34, 2.37, 2.6, 1.11, 1.59, 2.17, 1.99, 0.59, 0.76, 0.23,
2.22, 1.98, 0.41, 0.32, 0.37, 1.11, 2.29, 0.97, 1.61, 1.27, 1.22,
2.38, 1.28, 1.21, 0.93, 2.3, 0.8, 2.1, 2.86, 2.47, 2.34, 2.67,
0.31, 0.88, 1.84, 0.23, 2.41, 0.56, 2.03, 1.11, 0.12, 2.39, 0.34,
2.08, 1.01, 1.51), Age = c(66, 59, 49, 70, 42, 55, 28, 41, 69,
65, 40, 21, 18, 77, 28, 40, 47, 37, 47, 39, 32, 33, 42, 28, 59,
49, 29, 41, 22, 29, 53, 39, 55, 61, 30, 49, 43, 46, 18, 36, 34,
17, 42, 37, 37, 54, 48, 23, 71, 42, 52, 83, 19, 47, 23, 80, 43,
38, 47, 80, 36, 73, 74, 51, 76, 14, 65, 39, 17, 73), Past_Admissions = c(1,
1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1,
1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 1, 0, 0, 1)), .Names = c("Social_impairment",
"Levels_Depression",
"Age", "Past_Admissions"), row.names = c(NA, 70L), class =
"data.frame")
dim(df)
head(df)
str(df)
summary(df)
### call the library
library(ggplot2)
#### the plot
#### Levels_Depression on Social_impairment by Past_Admissions (yes/no)
#### linear model
#### radius of the bubbles proportional to age
#### background elimination
p1 <- ggplot(data = df, aes(x =Levels_Depression, y = Social_impairment,
group = as.factor(Past_Admissions), col = as.factor(Past_Admissions))) +
geom_point(aes(size = Age)) + geom_smooth(method = "lm") +
xlab("Levels
of depression") + ylab("Social impairment") +
scale_colour_discrete("History of \npast admissions\nto a psychiatric
service", labels = c("No", "Yes"))
p1 + theme(panel.grid.major = element_blank(), panel.grid.minor element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"))
### change of then axes' ticks
p1 + theme(panel.grid.major = element_blank(), panel.grid.minor element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"),
axis.text = element_text(color = "black", size = 12, face =
"italic"))
### after saving, dev.off()
###
#### Age on Social_impairment by Past_Admissions (yes/no)
#### linear model
#### radius of the bubbles proportional to Levels_Depression
#### background elimination
p2 <- ggplot(data = df, aes(x =Age , y = Social_impairment, group
as.factor(Past_Admissions), col = as.factor(Past_Admissions))) +
geom_point(aes(size = Levels_Depression)) + geom_smooth(method =
"lm")
+xlab("Age of participants") + ylab("Social impairment") +
scale_colour_discrete("History of \npast admissions\nto a psychiatric
service", labels = c("No", "Yes"))
p2 + theme(panel.grid.major = element_blank(), panel.grid.minor element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"))
### change of then axes' ticks
p2 + theme(panel.grid.major = element_blank(), panel.grid.minor element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"),
axis.text = element_text(color = "black", size = 12, face =
"italic"))
### after saving, dev.off()
###
########################
#### paired plots
########################
library(gridExtra)
grid.arrange(p1, p2, ncol = 2)
########################
### sessionInfo()
########################
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Italian_Italy.1252 LC_CTYPE=Italian_Italy.1252
[3] LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C
[5] LC_TIME=Italian_Italy.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] gridExtra_0.9.1 ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4
gtable_0.1.2
[5] labeling_0.2 MASS_7.3-33 munsell_0.4.2
plyr_1.8
[9] proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
scales_0.2.3
[13] stringr_0.6.2
[[alternative HTML version deleted]]
Dear Antonello, You can specify the colours manually with scale_colour_manual(). See http://docs.ggplot2.org/0.9.3.1/scale_manual.html for some examples. The last examples uses greys. Best regards, ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance Kliniekstraat 25 1070 Anderlecht Belgium To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ Roger Brinner The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. ~ John Tukey 2015-02-20 13:54 GMT+01:00 Antonello Preti <antoviral at gmail.com>:> Hi, I'm using ggplot2 to make a plot of the regression of a variable x (let > say, levels of depression), > on a variable y (let say, degree of social impairment), > by taking into account a binary factor (having had or not a past admission > to a psychiatric service), > and age of partecipants. > > After some search in Internet I produced a code which is satisfying to me. > This site was very helpful: http://editerna.free.fr/wp/?p=266 > > However, I have a problem: no matter what I try, the figures always include > bluette and pink flamingo colours. > The figure is for an academic article, and I cannot afford the price of > having the plot printed in colours. > > I've extracted the structure of the figure, and I understand that the > problem is in the scale_name "hue", > but I cannot figure out how to deal with it. > > Any way to override the ggplot2 system of dealing with factors? > > Here the codes and the sessionInfo > The code is a bit baroque, but this is the best I was able to do. > > > Thank you in advance, > Antonello Preti > > > > ######## code for exemplification > > ### the dataset > > df <- structure(list(Social_impairment = c(2.83, 3.08, 2.75, 2.08, > 2.92, 1.75, 3.5, 2.33, 2.91, 2.5, 3.25, 2.64, 3.25, 2.83, 2.08, > 2.25, 2.17, 2.42, 2.58, 2.42, 2.58, 2.42, 3, 3, 2.83, 2.67, 3.58, > 1.58, 2.83, 2.83, 2.67, 3.17, 2.42, 1.92, 2.92, 2.5, 2.42, 2.42, > 2.58, 2.42, 3.33, 3, 3.17, 2.17, 2.58, 2.67, 2.58, 3.75, 2.5, > 2.08, 2.25, 3.25, 3.17, 2.91, 2.08, 2.25, 3.08, 2.91, 3.08, 2.92, > 1.83, 2.5, 2.5, 2.83, 2.67, 3.33, 2.83, 3.33, 2.92, 3), Levels_Depression > c(1.3, > 1.71, 3.08, 0.48, 0.51, 0.71, 1.37, 0.2, 1.21, 1.07, 2.8, 1.24, > 0.46, 0.97, 0.81, 1.13, 1.58, 3.12, 1.8, 1.54, 1.02, 0.32, 2.63, > 1.39, 1.34, 2.37, 2.6, 1.11, 1.59, 2.17, 1.99, 0.59, 0.76, 0.23, > 2.22, 1.98, 0.41, 0.32, 0.37, 1.11, 2.29, 0.97, 1.61, 1.27, 1.22, > 2.38, 1.28, 1.21, 0.93, 2.3, 0.8, 2.1, 2.86, 2.47, 2.34, 2.67, > 0.31, 0.88, 1.84, 0.23, 2.41, 0.56, 2.03, 1.11, 0.12, 2.39, 0.34, > 2.08, 1.01, 1.51), Age = c(66, 59, 49, 70, 42, 55, 28, 41, 69, > 65, 40, 21, 18, 77, 28, 40, 47, 37, 47, 39, 32, 33, 42, 28, 59, > 49, 29, 41, 22, 29, 53, 39, 55, 61, 30, 49, 43, 46, 18, 36, 34, > 17, 42, 37, 37, 54, 48, 23, 71, 42, 52, 83, 19, 47, 23, 80, 43, > 38, 47, 80, 36, 73, 74, 51, 76, 14, 65, 39, 17, 73), Past_Admissions = c(1, > 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, > 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, > 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, > 1, 0, 1, 0, 0, 1)), .Names = c("Social_impairment", "Levels_Depression", > "Age", "Past_Admissions"), row.names = c(NA, 70L), class = "data.frame") > > dim(df) > head(df) > str(df) > summary(df) > > > ### call the library > > library(ggplot2) > > > #### the plot > > > #### Levels_Depression on Social_impairment by Past_Admissions (yes/no) > #### linear model > #### radius of the bubbles proportional to age > > > #### background elimination > > p1 <- ggplot(data = df, aes(x =Levels_Depression, y = Social_impairment, > group = as.factor(Past_Admissions), col = as.factor(Past_Admissions))) + > geom_point(aes(size = Age)) + geom_smooth(method = "lm") + xlab("Levels > of depression") + ylab("Social impairment") + > scale_colour_discrete("History of \npast admissions\nto a psychiatric > service", labels = c("No", "Yes")) > > p1 + theme(panel.grid.major = element_blank(), panel.grid.minor > element_blank(), > panel.background = element_blank(), axis.line = element_line(colour > "black")) > > > ### change of then axes' ticks > > p1 + theme(panel.grid.major = element_blank(), panel.grid.minor > element_blank(), > panel.background = element_blank(), axis.line = element_line(colour > "black"), > axis.text = element_text(color = "black", size = 12, face = "italic")) > > > ### after saving, dev.off() > ### > > > #### Age on Social_impairment by Past_Admissions (yes/no) > #### linear model > #### radius of the bubbles proportional to Levels_Depression > > > > #### background elimination > > p2 <- ggplot(data = df, aes(x =Age , y = Social_impairment, group > as.factor(Past_Admissions), col = as.factor(Past_Admissions))) + > geom_point(aes(size = Levels_Depression)) + geom_smooth(method = "lm") > +xlab("Age of participants") + ylab("Social impairment") + > scale_colour_discrete("History of \npast admissions\nto a psychiatric > service", labels = c("No", "Yes")) > > p2 + theme(panel.grid.major = element_blank(), panel.grid.minor > element_blank(), > panel.background = element_blank(), axis.line = element_line(colour > "black")) > > > ### change of then axes' ticks > > p2 + theme(panel.grid.major = element_blank(), panel.grid.minor > element_blank(), > panel.background = element_blank(), axis.line = element_line(colour > "black"), > axis.text = element_text(color = "black", size = 12, face = "italic")) > > > ### after saving, dev.off() > ### > > > ######################## > #### paired plots > ######################## > > library(gridExtra) > > grid.arrange(p1, p2, ncol = 2) > > > > ######################## > ### sessionInfo() > ######################## > > R version 3.0.2 (2013-09-25) > Platform: x86_64-w64-mingw32/x64 (64-bit) > > locale: > [1] LC_COLLATE=Italian_Italy.1252 LC_CTYPE=Italian_Italy.1252 > [3] LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C > [5] LC_TIME=Italian_Italy.1252 > > attached base packages: > [1] grid stats graphics grDevices utils datasets methods > [8] base > > other attached packages: > [1] gridExtra_0.9.1 ggplot2_0.9.3.1 > > loaded via a namespace (and not attached): > [1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4 > gtable_0.1.2 > [5] labeling_0.2 MASS_7.3-33 munsell_0.4.2 > plyr_1.8 > [9] proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2 > scales_0.2.3 > [13] stringr_0.6.2 > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >[[alternative HTML version deleted]]
Dear Antonello,
How about this? Obviously, you can change the background colours for the
confidence levels (deprespal) and for the regression lines, etc.
Surely, many in the list can improve on my rough and ready solution.
deprespal=c("#CCCCCC","#999999")
p2 <- ggplot(data = df, aes(x =Levels_Depression, y = Social_impairment,
group = as.factor(Past_Admissions),fill = as.factor(Past_Admissions) )) +
geom_point(aes(size = Age)) + geom_smooth(method = "lm",
col="black") + xlab("Levels of depression") +
ylab("Social impairment") +
scale_fill_manual(values=deprespal) +
scale_colour_discrete("History of \npast admissions\nto a psychiatric
service", labels = c("No", "Yes"))
p2
Regards,
Jos?
Prof. Jos? Iparraguirre
Chief Economist
Age UK
Age UK
Tavis House, 1- 6 Tavistock Square
London, WC1H 9NB
-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Antonello
Preti
Sent: 20 February 2015 12:54
To: r-help at r-project.org
Subject: [R] colours in ggplot2
Hi, I'm using ggplot2 to make a plot of the regression of a variable x (let
say, levels of depression), on a variable y (let say, degree of social
impairment), by taking into account a binary factor (having had or not a past
admission to a psychiatric service), and age of partecipants.
After some search in Internet I produced a code which is satisfying to me.
This site was very helpful: http://editerna.free.fr/wp/?p=266
However, I have a problem: no matter what I try, the figures always include
bluette and pink flamingo colours.
The figure is for an academic article, and I cannot afford the price of having
the plot printed in colours.
I've extracted the structure of the figure, and I understand that the
problem is in the scale_name "hue", but I cannot figure out how to
deal with it.
Any way to override the ggplot2 system of dealing with factors?
Here the codes and the sessionInfo
The code is a bit baroque, but this is the best I was able to do.
Thank you in advance,
Antonello Preti
######## code for exemplification
### the dataset
df <- structure(list(Social_impairment = c(2.83, 3.08, 2.75, 2.08, 2.92,
1.75, 3.5, 2.33, 2.91, 2.5, 3.25, 2.64, 3.25, 2.83, 2.08, 2.25, 2.17, 2.42,
2.58, 2.42, 2.58, 2.42, 3, 3, 2.83, 2.67, 3.58, 1.58, 2.83, 2.83, 2.67, 3.17,
2.42, 1.92, 2.92, 2.5, 2.42, 2.42, 2.58, 2.42, 3.33, 3, 3.17, 2.17, 2.58, 2.67,
2.58, 3.75, 2.5, 2.08, 2.25, 3.25, 3.17, 2.91, 2.08, 2.25, 3.08, 2.91, 3.08,
2.92, 1.83, 2.5, 2.5, 2.83, 2.67, 3.33, 2.83, 3.33, 2.92, 3), Levels_Depression
= c(1.3, 1.71, 3.08, 0.48, 0.51, 0.71, 1.37, 0.2, 1.21, 1.07, 2.8, 1.24, 0.46,
0.97, 0.81, 1.13, 1.58, 3.12, 1.8, 1.54, 1.02, 0.32, 2.63, 1.39, 1.34, 2.37,
2.6, 1.11, 1.59, 2.17, 1.99, 0.59, 0.76, 0.23, 2.22, 1.98, 0.41, 0.32, 0.37,
1.11, 2.29, 0.97, 1.61, 1.27, 1.22, 2.38, 1.28, 1.21, 0.93, 2.3, 0.8, 2.1, 2.86,
2.47, 2.34, 2.67, 0.31, 0.88, 1.84, 0.23, 2.41, 0.56, 2.03, 1.11, 0.12, 2.39,
0.34, 2.08, 1.01, 1.51), Age = c(66, 59, 49, 70, 42, 55, 28, 41, 69, 65, 40, 21,
18, 77, 28, 40, 47, 37, 47, 39, 32, 33, 42, 28, 59, 49, 29, 41, 22, 29, 53, 39,
55, 61, 30, 49, 43, 46, 18, 36, 34, 17, 42, 37, 37, 54, 48, 23, 71, 42, 52, 83,
19, 47, 23, 80, 43, 38, 47, 80, 36, 73, 74, 51, 76, 14, 65, 39, 17, 73),
Past_Admissions = c(1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1,
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1,
1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1)), .Names =
c("Social_impairment", "Levels_Depression", "Age",
"Past_Admissions"), row.names = c(NA, 70L), class =
"data.frame")
dim(df)
head(df)
str(df)
summary(df)
### call the library
library(ggplot2)
#### the plot
#### Levels_Depression on Social_impairment by Past_Admissions (yes/no) ####
linear model #### radius of the bubbles proportional to age
#### background elimination
p1 <- ggplot(data = df, aes(x =Levels_Depression, y = Social_impairment,
group = as.factor(Past_Admissions), col = as.factor(Past_Admissions))) +
geom_point(aes(size = Age)) + geom_smooth(method = "lm") +
xlab("Levels of depression") + ylab("Social impairment") +
scale_colour_discrete("History of \npast admissions\nto a psychiatric
service", labels = c("No", "Yes"))
p1 + theme(panel.grid.major = element_blank(), panel.grid.minor =
element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"))
### change of then axes' ticks
p1 + theme(panel.grid.major = element_blank(), panel.grid.minor =
element_blank(),
panel.background = element_blank(), axis.line = element_line(colour =
"black"),
axis.text = element_text(color = "black", size = 12, face =
"italic"))
### after saving, dev.off()
###
#### Age on Social_impairment by Past_Admissions (yes/no) #### linear model ####
radius of the bubbles proportional to Levels_Depression
#### background elimination
p2 <- ggplot(data = df, aes(x =Age , y = Social_impairment, group =
as.factor(Past_Admissions), col = as.factor(Past_Admissions))) +
geom_point(aes(size = Levels_Depression)) + geom_smooth(method =
"lm")
+xlab("Age of participants") + ylab("Social impairment") +
scale_colour_discrete("History of \npast admissions\nto a psychiatric
service", labels = c("No", "Yes"))
p2 + theme(panel.grid.major = element_blank(), panel.grid.minor =
element_blank(),
panel.background = element_blank(), axis.line = element_line(colour
"black"))
### change of then axes' ticks
p2 + theme(panel.grid.major = element_blank(), panel.grid.minor =
element_blank(),
panel.background = element_blank(), axis.line = element_line(colour =
"black"),
axis.text = element_text(color = "black", size = 12, face =
"italic"))
### after saving, dev.off()
###
########################
#### paired plots
########################
library(gridExtra)
grid.arrange(p1, p2, ncol = 2)
########################
### sessionInfo()
########################
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Italian_Italy.1252 LC_CTYPE=Italian_Italy.1252 [3]
LC_MONETARY=Italian_Italy.1252 LC_NUMERIC=C [5] LC_TIME=Italian_Italy.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] gridExtra_0.9.1 ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4
gtable_0.1.2
[5] labeling_0.2 MASS_7.3-33 munsell_0.4.2
plyr_1.8
[9] proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
scales_0.2.3
[13] stringr_0.6.2
[[alternative HTML version deleted]]
______________________________________________
R-help at 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.
Age UK Group
Age UK is a registered charity and company limited by guarantee, (registered
charity number 1128267, registered company number 6825798) Registered office:
Tavis House, 1-6 Tavistock Square, London WC1H 9NA.
For the purposes of promoting Age UK Insurance, Age UK is an Appointed
Representative of Age UK Enterprises Limited. Age UK Enterprises Limited is
authorised and regulated by the Financial Conduct Authority.
Charitable Services are offered through Age UK (the Charity) and commercial
products and services are offered by the Charity?s subsidiary companies. The Age
UK Group comprises of Age UK, and its subsidiary companies and charities,
dedicated to improving the lives of people in later life. Our network includes
the three national charities Age Cymru, Age NI and Age Scotland and more than
160 local Age UK charities.
This email and any files transmitted with it are confide...{{dropped:11}}