Rename legend.title within black and white-settings

57 views
Skip to first unread message

Ruedi Epple

unread,
Sep 5, 2009, 9:02:40 AM9/5/09
to ggplot2
Hi,
I use the settings for black and white-fillings:
set_default_scale("colour", "discrete", "grey")
set_default_scale("fill", "discrete", "grey")
set_default_scale("colour", "continuous", "gradient",low = "white",
high = "black")
set_default_scale( "fill", "continuous", "gradient", low = "white",
high = "black")
Later on, I try to rename the legend.title with scale_fill_hue(name =
"xyz"). But then, I loose the black and white-settings. How can I
change the legend.title to "xyz" within the black and white-settings?
Kind regards
Ruedi

hadley wickham

unread,
Sep 6, 2009, 9:39:10 AM9/6/09
to Ruedi Epple, ggplot2

Use scale_colour_discrete.

Hadley

--
http://had.co.nz/

Ruedi Epple

unread,
Sep 6, 2009, 3:53:07 PM9/6/09
to ggplot2
Thanks, Hadley, but scale_colour_discrete doesn't work.
I want to change "ArbeiterInnen" to "Arbeiter/innen".
Ruedi

data in g:
Jahr ArbeiterInnen Anzahl
1882 in Fabrikbetrieben 1.34862
1903 in Fabrikbetrieben 2.45229
1905 in Fabrikbetrieben 2.77000
1910 in Fabrikbetrieben 3.19593
1882 in Heimindustrie 1.44000
1903 in Heimindustrie 1.28000
1905 in Heimindustrie 1.08000
1910 in Heimindustrie 0.94000
1882 in anderen Betrieben 2.90364
1903 in anderen Betrieben 3.55349
1905 in anderen Betrieben 3.66588
1910 in anderen Betrieben 3.95521

graph:
#black and white
set_default_scale("colour", "discrete", "grey")
set_default_scale("fill", "discrete", "grey")
set_default_scale("colour", "continuous", "gradient",low = "white",
high = "black")
set_default_scale("fill", "continuous", "gradient", low = "white",
high = "black")

#Theme
ep_theme <- theme_update(
#Ziffern entlang der Achsen:,angle=90
axis.text.x = theme_text( family='serif', face="bold",
colour='grey50', size=11),
axis.text.y = theme_text( family='serif', face="bold",
colour='grey50', size=11, hjust=1),
axis.ticks = theme_blank(),
#Achsenbezeichnungen
axis.title.x = theme_text( family='serif', colour='white', size=11),
axis.title.y = theme_text( family='serif', face="bold", angle=90,
colour='grey50', size=11),
#Beschriftung der Seitenstreifen
strip.text.x = theme_text( family='serif', size=11),
strip.text.y = theme_text( family='serif', face="bold", angle=-90),
#Legendenbeschriftung
legend.text = theme_text( family='serif', size=11),
legend.title = theme_text( family='serif', face="bold", hjust=-0.03,
size=11),
#Legendenfeld
legend.background = theme_rect(fill='white', colour='white', size=1),
legend.key = theme_rect(fill='white', colour='white'),
legend.position =c(0.25,0.85),
#Hintergrund mit Netz
panel.grid.major = theme_line(colour='grey80'),
panel.grid.minor = theme_line(colour='grey80'))

g$ArbeiterInnen <- factor(g$ArbeiterInnen, levels = unique(g
$ArbeiterInnen))

q<-ggplot(g, aes(x=Jahr, y=Anzahl, fill=ArbeiterInnen))
r<- q + layer(
geom="bar",
position="dodge",
stat_params = list(binwidth = 1)
) + scale_y_continuous("In 100'000")
r

baptiste auguie

unread,
Sep 6, 2009, 4:53:05 PM9/6/09
to Ruedi Epple, ggplot2
scale_fill_discrete ?


baptiste

Ruedi Epple

unread,
Sep 6, 2009, 4:57:41 PM9/6/09
to ggplot2
Thanks, Baptiste, it works, but I loose black and white settings.
Ruedi

On Sep 6, 10:53 pm, baptiste auguie <bapt4...@googlemail.com> wrote:
> scale_fill_discrete ?
>
> baptiste
>

baptiste auguie

unread,
Sep 7, 2009, 5:18:34 AM9/7/09
to Ruedi Epple, ggplot2
Could you please provide a minimal and reproducible example (that we
can copy and paste)?

baptiste
--
_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

http://newton.ex.ac.uk/research/emag
______________________________

Ruedi Epple

unread,
Sep 7, 2009, 2:15:01 PM9/7/09
to ggplot2
Hallo Babtiste,
I hope you can copy/paste it now. I want to replace "ArbeiterInnen" by
"Arbeiter/innen" without loosing black and white.
Kind regards
Ruedi

a<-c(3, 4, 4, 1, 1, 16, 23, 1)
b<-c(rep("F",4), rep("H",4))
c<-c(rep(c("a", "b", "c", "d"),2))
data<-data.frame(a,b,c)
colnames(data)<-c("Anzahl", "ArbeiterInnen", "Branche")

set_default_scale("fill", "continuous", "gradient", low = "white",
high = "black")
ep_theme <- theme_update(
axis.text.x = theme_text( family='serif', face="bold",
colour='grey50', size=11),
axis.text.y = theme_text( family='serif', face="bold",
colour='grey50', size=11),
axis.ticks = theme_blank(),
axis.title.y = theme_text( family='serif', face="bold", angle=90,
colour='grey50', size=11),
legend.text = theme_text( family='serif', size=11),
legend.title = theme_text( family='serif', face="bold", hjust=-0.03,
size=11),
legend.background = theme_rect(fill='white', colour='white', size=1),
legend.key = theme_rect(fill='white', colour='white'),
legend.position =c(0.25,0.84),
panel.grid.major = theme_line(colour='grey80'),
panel.grid.minor = theme_line(colour='grey80'))


data$Branche <- factor(data$Branche, levels = unique(data$Branche))

q<-ggplot(data, aes(x=Branche, y=Anzahl, fill=ArbeiterInnen))
r<- q + layer(
geom="bar",
position="stack"
) + scale_y_continuous("In 1000")
r

baptiste auguie

unread,
Sep 7, 2009, 2:43:58 PM9/7/09
to Ruedi Epple, ggplot2
Hi,

I'm somewhat confused as your plot appears in colour for me when I run
your code. If you want grey scale, try this,

r + scale_fill_grey("Arbeiter/innen")

HTH,

baptiste

Ruedi Epple

unread,
Sep 7, 2009, 2:58:30 PM9/7/09
to ggplot2
Thank you very much, Baptiste, it's perfect now.
Kind regards
Ruedi
Reply all
Reply to author
Forward
0 new messages