Добавить границу панели в ggplot2
Мне было предложено разместить полную границу вокруг моего сюжета ниже:
![enter image description here]()
Использование panel.border = element_rect(colour = "black")
приводит к тому, что на графике становится пустой.
Я не могу использовать theme_bw()
, так как он не имеет той же функциональности, что и обычная тема, код, который я использую сейчас:
graph<-ggplot(d,aes(x=d$AOE, y=d$MEI)
)+
geom_point(shape=20, size=3)+
geom_rug()+
annotate("text", x = -1.1, y = 14000, label = "27/04/2011") +
annotate("text", x = -1.3, y = 10400, label = "03/04/1974") +
xlab("MEI")+
ylab("AOE")+
scale_y_log10()+
theme(axis.text.y = element_text(size=14),
axis.text.x = element_text(size=14),
axis.title.y = element_text(size=14),
axis.title.x = element_text(size=14),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black")
)
graph
Любые советы о том, как получить полную черную границу, будут очень оценены!
Ответы
Ответ 1
Чтобы использовать panel.border
, вы также должны указать пустое заполнение с помощью fill=NA
.
Попробуйте следующее:
library(ggplot2)
ggplot(mtcars, aes(mpg, disp)) + geom_point() + geom_rug() +
theme(axis.text.y = element_text(size=14),
axis.text.x = element_text(size=14),
axis.title.y = element_text(size=14),
axis.title.x = element_text(size=14),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"),
panel.border = element_rect(colour = "black", fill=NA, size=5)
)
![enter image description here]()
Ответ 2
Вы можете использовать theme_bw()
и theme()
вместе. Это должно работать:
# creating some data
set.seed(1)
d <- data.frame(MEI=rnorm(100), AOE=rlnorm(100, 10, 5))
# creating the plot
ggplot(d,aes(x=MEI, y=AOE)) +
geom_point(shape=20, size=3) +
geom_rug() +
scale_y_log10() +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_rect(colour = "black", size=4))
это дает:
![enter image description here]()
Решение без theme_bw()
и вдохновленное @Andrie, но с использованием panel.background
вместо panel.border
:
ggplot(d,aes(x=MEI, y=AOE)) +
geom_point(shape=20, size=3) +
geom_rug() +
scale_y_log10() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_rect(colour = "black", size=4, fill=NA))
это даст тот же самый сюжет. Разница между panel.background
и panel.border
заключается в том, что panel.background
рисуется под графиком и panel.border
рисуется поверх графика.