Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
387 views
in Technique[技术] by (71.8m points)

r - Copying and modifying a default theme

I would like to create a new theme for ggplot that is based on theme_bw().

I imagine the following steps are necessary (in pseudocode):

  1. Make a copy of theme_bw(): theme_new() <- theme_bw()
  2. Modify the copy: theme_update(axis.title.x = theme_text(family = base_family, size = base_size, vjust = 0.5))

Any advice on how to implement this will be very much appreciated!


Edit: @Andrie, I modified your answer for my needs:

theme_new <- theme_set(theme_bw())
theme_new <- theme_update(axis.title.x = theme_text(family = base_family, size = base_size, vjust = 0.5))

However, I get the following error:

ggplot(mtcars, aes(factor(cyl))) + geom_bar()

Error in match(gparname, names(gpars)) : object 'base_size' not found


Edit: 31/10/2017, answer provided by @Andrie works just fine. R version 3.4.1, ggplot2_2.2.1

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your code just needs a few small changes to work (mainly removing brackets and adding brackets at the right places)

theme_new <- theme_set(theme_bw())

theme_new <- theme_update(
    panel.background = element_rect(fill="lightblue"))

ggplot(mtcars, aes(factor(cyl))) + geom_bar()

enter image description here


Reference:


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...