以后,请在您的控制台中通过dput(tidydf) 分享您的数据集+将生成的代码粘贴到您的问题中。这样,我不必先向您展示如何在给出答案之前重新创建数据模拟。
重新创建 OP 的示例
library(ggplot2)
library(scales)
set.seed(8675309)
tidydf <- data.frame(
Genome_size = sample(1000:7000, 30, replace = T),
Trio_number = sample(1:20, 30, replace = T),
Group = sample(c('Free-living', 'Gut', 'Pathogen'), 30, replace = T)
)
p <-
ggplot(tidydf, aes(Genome_size, `Trio_number`, color = Group)) +
geom_point() +
scale_y_continuous(breaks = seq(0, 20, by = 1)) +
ylab("Trio number") + xlab("Genome size (kb)") +
theme_light() +
scale_x_continuous(labels = comma) +
scale_color_brewer(palette = "Accent") +
guides(colour = guide_legend(override.aes = list(size=4))) +
theme(
legend.position = "bottom",
legend.key=element_rect(fill='gray96'),
plot.background = element_rect(fill = 'gray96'),
legend.title =element_text(size=10),
text=element_text(size=12),
axis.title.x = element_text(vjust = 0, size = 11),
axis.title.y = element_text(vjust = 2, size = 11),
axis.text = element_text(color = "black", size = 9),
# to make the theme look more similar to OP example
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank()
)
p
您的情节的主要注意事项是所有theme() 元素都可以(并且确实应该)组合成一个theme() 调用。按照惯例,我倾向于根据广义分组来组织我的情节代码,以帮助跟踪事情。这是我建议的组织方式,但您可以保留自己的方式:
- 初始绘图调用和几何图形
-
scale_ 命令和调整
- 标签,通常更喜欢使用
labs(...)而不是ggtitle()、ylab()、xlab()
- 主题素材
OP 的问题
1.删除情节周围的边框
只需访问theme 元素panel.border。
2。让背景中的线条变暗一点
访问theme 元素族panel.grid。您可以选择访问所有网格线、所有次要/主要网格线,或向下拨到 x 和 y 轴的每个次要和/或主要网格线。
将这两者放在一起,我们得到了:
p + theme(
panel.border = element_blank(),
panel.grid.major.y = element_line(color='gray70')
)
3.稍微增加行间距
有两种方法可以做到这一点。我认为您需要做的就是删除 y 轴的次要网格线,它看起来可能是您想要的样子:
p + theme(
panel.border = element_blank(),
panel.grid.major.y = element_line(color='gray70'),
panel.grid.minor.y = element_blank()
)
但是,如果您仍想稍微扩展 y 轴线...好吧,这里唯一真正的选择是了解输出将取决于您的图形设备 - 特别是窗户。如果您在 Excel 或其他类似程序中制作此图表,则可以通过在 y 方向整体“拉伸”绘图来进一步展开这些线条。这基本上就是你需要在这里做的。在这种情况下,我使用以下代码保存绘图:
ggsave('myplot.png', width=4, height=3.5)
如果我想“拉伸”y 轴上的线条,我只需将绘图保存为“更高”:
ggsave('my_stretched_plot.png', width=4, height=5.5)