L-shaped box around plot

738 views
Skip to first unread message

Johannes Radinger

unread,
Apr 26, 2012, 5:42:00 AM4/26/12
to ggp...@googlegroups.com
Hi,

I have succuessfully produced a nice plot in ggplot2.
To fullfil some requirements for publishing there should
be no box around the plot, only the x and y axis should have
a line (like a L-shaped box around the plot).
Is there a simple in way in the new ggplot2 to achieve this?
Is there a theme for this or can I add a simple line to my code?

# ggplot2: My plot so far:
ggplot(df.summary, aes(x=x, y=y)) +
geom_point(position=pd, size=3)+
theme_bw()+
opts(legend.position = c(0.9,0.2),
legend.title = theme_blank(),
panel.grid.minor = theme_blank(),
panel.grid.major = theme_blank())

best regards,
johannes
--
NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone!
Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a

baptiste auguie

unread,
Apr 26, 2012, 5:44:43 AM4/26/12
to Johannes Radinger, ggp...@googlegroups.com
hi,

Claudia shared an example in the wiki:
https://github.com/hadley/ggplot2/wiki/Themes

HTH,

b.
> --
> You received this message because you are subscribed to the ggplot2 mailing list.
> Please provide a reproducible example: https://github.com/hadley/devtools/wiki/Reproducibility
>
> To post: email ggp...@googlegroups.com
> To unsubscribe: email ggplot2+u...@googlegroups.com
> More options: http://groups.google.com/group/ggplot2

Johannes Radinger

unread,
Apr 26, 2012, 9:57:07 AM4/26/12
to baptiste auguie, ggp...@googlegroups.com
Hi Baptiste,

thank you very much for that link. I think that is a very
good starting point for my plot...
...anyway there is a problem with the example,
1) it does use the function unit() and therefore libarary(grid) must be loaded (thats not the problem)
2) I can't reproduce the output of the example for the L-shape, I only
get a line for the x-axis... not for both (x and y)

Any suggestions what I am doing wrong resp. how the code has to
change to fit to the new version of ggplot2?


Here the example from the link:
library(grid)
library(gglot2)

theme_minimal <- function (base_size = 12, base_family = "")
{
structure(list(axis.line = theme_blank(), axis.text.x = theme_text(family = base_family,
size = base_size * 0.8, lineheight = 0.9, vjust = 1),
axis.text.y = theme_text(family = base_family, size = base_size *
0.8, lineheight = 0.9, hjust = 1), axis.ticks = theme_segment(colour = "black",
size = 0.2), axis.title.x = theme_text(family = base_family,
size = base_size, vjust = 1), axis.title.y = theme_text(family = base_family,
size = base_size, angle = 90, vjust = 0.5), axis.ticks.length = unit(0.3,
"lines"), axis.ticks.margin = unit(0.5, "lines"), legend.background = theme_rect(colour = NA),
legend.margin = unit(0.2, "cm"), legend.key = theme_rect(colour = NA),
legend.key.size = unit(1.2, "lines"), legend.key.height = NULL,
legend.key.width = NULL, legend.text = theme_text(family = base_family,
size = base_size * 0.8), legend.text.align = NULL,
legend.title = theme_text(family = base_family, size = base_size *
0.8, face = "bold", hjust = 0), legend.title.align = NULL,
legend.position = "right", legend.direction = "vertical", legend.justification = "center",
legend.box = NULL, panel.background = theme_rect(fill = "white",
colour = NA), panel.border = theme_rect(fill = NA,
colour = "grey90"), panel.grid.major = theme_line(colour = "grey90",
size = 0.2), panel.grid.minor = theme_line(colour = "grey98",
size = 0.5), panel.margin = unit(0.25, "lines"),
strip.background = theme_rect(fill = NA, colour = NA),
strip.text.x = theme_text(family = base_family, size = base_size *
0.8), strip.text.y = theme_text(family = base_family,
size = base_size * 0.8, angle = -90), plot.background = theme_rect(colour = NA),
plot.title = theme_text(family = base_family, size = base_size *
1.2), plot.margin = unit(c(1, 1, 0.5, 0.5), "lines")),
class = "options")
}


theme_minimal_cb_L <- function (base_size = 12, base_family = "", ...){
modifyList (theme_minimal (base_size = base_size, base_family = base_family),
list (axis.line = theme_segment (colour = "black")))
}

mdf <- data.frame(x <- seq(0, 10), y=rnorm(x),
f=factor(rep(letters[1:2], each=3, length=length(x))))

p <- qplot(x, y, data=mdf, colour=f, geom=c("line", "point")) +
scale_x_continuous(expand=c(0,0))+
scale_y_continuous(expand=c(0,0))+
theme_minimal_cb_L()



Thank you and
best regards,

Johannes


-------- Original-Nachricht --------
> Datum: Thu, 26 Apr 2012 21:44:43 +1200
> Von: baptiste auguie <baptist...@googlemail.com>
> An: Johannes Radinger <JRad...@gmx.at>
> CC: ggp...@googlegroups.com
> Betreff: Re: L-shaped box around plot

baptiste auguie

unread,
Apr 26, 2012, 3:31:50 PM4/26/12
to Johannes Radinger, ggp...@googlegroups.com
Hi,

There might be a bug in the way the y-axis is drawn below the plot panel:
https://github.com/hadley/ggplot2/pull/305
Is this what you're seeing too?
Apparently it's fixed in some dev version, though I could not find one
that would work.

baptiste

Johannes Radinger

unread,
Dec 19, 2012, 4:36:38 AM12/19/12
to ggp...@googlegroups.com, Johannes Radinger, baptist...@googlemail.com
Hi,

just to ask now after some time again:

Has anything changed recently in the new versions of ggplot2?
Do I still have to manually define new functions to modify my plot?
Or is there now already a built-in theme for L-shaped axis lines instead of a 4-lines box?

best regards,

Johannes

Ista Zahn

unread,
Dec 19, 2012, 8:00:23 AM12/19/12
to Johannes Radinger, ggp...@googlegroups.com, Johannes Radinger, baptist...@googlemail.com
Hi Johannes,

There is a new theme system that should make this easier. See ?theme
for details, but here is an example:

(p <- ggplot(mtcars,
aes(x=wt, y=mpg)) +
geom_point() +
theme_bw() +
theme(panel.border=element_blank(),
axis.line=element_line()))

my_theme <- theme_bw() +
theme(panel.border=element_blank(),
axis.line=element_line())

p + my_theme
Reply all
Reply to author
Forward
0 new messages