当在透明到较暗的背景上打印时,有没有办法摆脱theme_bw()
中的这些白线?在theme_minimal()
它们没有出现,但我想要theme_bw()
。我尝试了几个theme()
选项进行修改,但没有成功。
示例:的
data(iris)
names(iris) <- tolower(names(iris))
library(ggplot2)
plot1 <- ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
panel.background= element_blank())
pdf("plot1.pdf", width=4, height=4)
plot1
dev.off()
plot2 <- ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_minimal() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
panel.background= element_blank())
pdf("plot2.pdf", width=4, height=4)
plot2
dev.off()
注意:我在InDesign CS4中这样做。
答案 0 :(得分:3)
您正在寻找plot.background
主题元素,而不是panel.background
主题元素。该图是整个区域,包括轴外,而面板是轴内或轴之间的区域。
丑陋的阴谋来说明差异:
ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
panel.background= element_rect(color = "red", fill = "yellow", size = 6))
ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
plot.background = element_rect(color = "red", fill = "yellow", size = 6))
theme_bw
默认为带有白色边框的情节背景。
theme_bw()$plot.background
List of 5
$ fill : NULL
$ colour : chr "white"
$ size : NULL
$ linetype : NULL
$ inherit.blank: logi TRUE
- attr(*, "class")= chr [1:2] "element_rect" "element"
因此,您可以将plot.background
设置为element_blank
,或element_rect
颜色为NA
或透明,或任何其他方式使其不可见。由于您不需要绘图背景的任何属性,因此最简单的只是plot.background = element_blank()
。
ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
plot.background = element_blank())
答案 1 :(得分:0)
Panel Border应该可以解决问题
plot1 <- ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_bw() +
theme(rect=element_rect(fill="transparent"),panel.border = element_blank(),
panel.grid = element_blank(),
panel.background= element_blank())
答案 2 :(得分:0)
为什么不使用theme_minimal
并调整主题?
col = "#383838"
plot2 <- ggplot(iris, aes(x=sepal.length, y=sepal.width)) +
geom_smooth() +
theme_minimal() +
theme(rect=element_rect(fill="transparent"),
panel.grid = element_blank(),
axis.ticks = element_line(colour = col),
axis.line = element_line(colour = col, color = col, size = 0.1),
panel.border = element_rect(colour = col),
panel.background= element_blank())
pdf("plot2.pdf", width=4, height=4)
plot2
dev.off()
或者您出于某种原因必须使用theme_bw
吗?