Theo mặc định, ggplot2 tạo ra các ô có nền màu xám. Làm cách nào để thay đổi màu nền của mảnh đất?
Ví dụ: một âm mưu được tạo bởi mã sau:
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
Theo mặc định, ggplot2 tạo ra các ô có nền màu xám. Làm cách nào để thay đổi màu nền của mảnh đất?
Ví dụ: một âm mưu được tạo bởi mã sau:
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
Câu trả lời:
Để thay đổi màu nền của bảng điều khiển, hãy sử dụng mã sau:
myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))
Để thay đổi màu của ô (nhưng không phải màu của bảng), bạn có thể thực hiện:
myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))
Xem tại đây để biết thêm chi tiết chủ đề Bảng tham khảo nhanh về truyền thuyết, trục và chủ đề .
ggplot <- function(...) { ggplot2::ggplot(...) + theme_bw() }
opts
và theme_rect
không được dùng nữa trong các phiên bản mới hơn của ggplot2. (0,9.3). Vì vậy, các phiên bản mới hơn của lệnh thứ hai sẽ trở thành:myplot + theme(plot.background = element_rect(fill='green', colour='red'))
Để tránh không dùng nữa opts
và theme_rect
sử dụng:
myplot + theme(panel.background = element_rect(fill='green', colour='red'))
Để xác định chủ đề tùy chỉnh của riêng bạn, dựa trên theme_gray nhưng với một số thay đổi của bạn và một số tính năng bổ sung được thêm vào bao gồm kiểm soát màu sắc / kích thước đường lưới (có thêm tùy chọn để chơi tại 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")
)
}
Để đặt chủ đề tùy chỉnh của bạn làm chủ đề mặc định khi ggplot được gọi trong tương lai mà không cần che:
theme_set(theme_jack())
Nếu bạn muốn thay đổi một phần tử của chủ đề hiện đã đặt:
theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))
Để lưu trữ chủ đề mặc định hiện tại dưới dạng một đối tượng:
theme_pink <- theme_get()
Lưu ý rằng đó theme_pink
là một danh sách trong khi đó theme_jack
là một hàm. Vì vậy, để trả lại chủ đề để sử dụng theme_jack theme_set(theme_jack())
trong khi quay lại sử dụng theme_pink theme_set(theme_pink)
.
Bạn có thể thay thế theme_gray
bằng theme_bw
trong định nghĩa của theme_jack
nếu bạn thích. Để chủ đề tùy chỉnh của bạn giống theme_bw
nhưng với tất cả các đường lưới (x, y, chính và phụ) bị tắt:
theme_nogrid <- function (base_size = 12, base_family = "") {
theme_bw(base_size = base_size, base_family = base_family) %+replace%
theme(
panel.grid = element_blank()
)
}
Cuối cùng, một chủ đề cấp tiến hơn hữu ích khi vẽ đồ thị choropleth hoặc các bản đồ khác trong ggplot, dựa trên thảo luận ở đây nhưng được cập nhật để tránh bị phản đối. Mục đích ở đây là loại bỏ nền xám và bất kỳ đối tượng địa lý nào khác có thể làm mất tập trung trên bản đồ.
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)
)
}
plot.background
phải được chuyển tới theme
. Các đối số khác là tùy chọn.
Đây là một chủ đề tùy chỉnh để làm cho nền ggplot2 có màu trắng và một loạt các thay đổi khác phù hợp với các ấn phẩm và áp phích. Chỉ cần nhấn vào + mytheme. Nếu bạn muốn thêm hoặc thay đổi các tùy chọn theo + chủ đề sau + mytheme, nó sẽ chỉ thay thế các tùy chọn đó từ + mytheme.
library(ggplot2)
library(cowplot)
theme_set(theme_cowplot())
mytheme = list(
theme_classic()+
theme(panel.background = element_blank(),strip.background = element_rect(colour=NA, fill=NA),panel.border = element_rect(fill = NA, color = "black"),
legend.title = element_blank(),legend.position="bottom", strip.text = element_text(face="bold", size=9),
axis.text=element_text(face="bold"),axis.title = element_text(face="bold"),plot.title = element_text(face = "bold", hjust = 0.5,size=13))
)
ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + mytheme + geom_line()
theme_bw
, cung cấp cho bạn nền trắng và đường lưới màu xám. Tôi sử dụng nó mọi lúc, như trong in ấn có vẻ tốt hơn nhiều so với nền màu xám mặc định:myplot + theme_bw()