Как изменить цвет фона графика, выполненного с помощью ggplot2
по умолчанию ggplot2 создает графики с серым фоном. Как изменить цвет фона сюжета?
например, сюжет создается следующим кодом:
library(ggplot2)
myplot<-ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + geom_line()
myplot
2 ответов:
изменить цвет фона панели, используйте следующий код:
myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))чтобы изменить цвет участка (но не цвет панели), вы можете сделать:
myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))смотрите здесь для получения дополнительной информации о теме Краткий справочный лист для легенд, осей и тем.
чтобы избежать устаревшие
optsиtheme_rectиспользование:myplot + theme(panel.background = element_rect(fill='green', colour='red'))чтобы определить свою собственную тему, основанную на theme_gray, но с некоторыми из ваших изменений и несколькими дополнительными функциями, включая контроль цвета/размера сетки (больше возможностей для игры с at ggplot2.org):
theme_jack <- function (base_size = 12, base_family = "") { theme_gray(base_size = base_size, base_family = base_family) %+replace% theme( axis.text = element_text(colour = "white"), axis.title.x = element_text(colour = "pink", size=rel(3)), axis.title.y = element_text(colour = "blue", angle=45), panel.background = element_rect(fill="green"), panel.grid.minor.y = element_line(size=3), panel.grid.major = element_line(colour = "orange"), plot.background = element_rect(fill="red") ) }чтобы сделать вашу пользовательскую тему по умолчанию, когда ggplot вызывается в будущем, без маскировки:
theme_set(theme_jack())если вы хотите изменить элемент в настоящее время установить тему:
theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))сохранить текущую тему по умолчанию в качестве объекта:
theme_pink <- theme_get()отметим, что
theme_pink- это список, тогда какtheme_jackбыла функция. Поэтому, чтобы вернуть тему theme_jack используйтеtheme_set(theme_jack())тогда как для возврата к theme_pink используйтеtheme_set(theme_pink).вы можете заменить
theme_graybytheme_bwв определенииtheme_jackесли вы предпочитаете. Для вашей пользовательской темы, чтобы походитьtheme_bwно со всеми линиями сетки (x, y, major и minor) повернутыми выкл:theme_nogrid <- function (base_size = 12, base_family = "") { theme_bw(base_size = base_size, base_family = base_family) %+replace% theme( panel.grid = element_blank() ) }наконец, более радикальная тема полезна при построении графика choropleths или другие карты в ggplot, основанные на обсуждении здесь но обновлено, чтобы избежать устаревания. Цель здесь состоит в том, чтобы удалить серый фон и любые другие особенности, которые могут отвлекать от карт.
theme_map <- function (base_size = 12, base_family = "") { theme_gray(base_size = base_size, base_family = base_family) %+replace% theme( axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.ticks.length=unit(0.3, "lines"), axis.ticks.margin=unit(0.5, "lines"), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.background=element_rect(fill="white", colour=NA), legend.key=element_rect(colour="white"), legend.key.size=unit(1.2, "lines"), legend.position="right", legend.text=element_text(size=rel(0.8)), legend.title=element_text(size=rel(0.8), face="bold", hjust=0), panel.background=element_blank(), panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), panel.margin=unit(0, "lines"), plot.background=element_blank(), plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"), plot.title=element_text(size=rel(1.2)), strip.background=element_rect(fill="grey90", colour="grey50"), strip.text.x=element_text(size=rel(0.8)), strip.text.y=element_text(size=rel(0.8), angle=-90) ) }
Comments