【问题标题】:How can I remove the border, increase the line space and add borders to my points in r?如何删除边框,增加行距并在 r 中为我的点添加边框?
【发布时间】:2021-06-17 10:43:31
【问题描述】:

我的情节:

我正在寻找

  • 移除绘图周围的边框
  • 让背景中的线条变暗一点
  • 稍微增加行间距

我当前的代码在这里

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_dotplot + scale_x_continuous(labels = comma) + theme(legend.position = "bottom") + scale_color_brewer(palette = "Accent") + theme(legend.title=element_blank()) + guides(colour = guide_legend(override.aes = list(size=4))) +theme(legend.key=element_rect(fill='gray96')) +
    theme(plot.background = element_rect(fill = 'gray96')) + theme(legend.title = element_text(size=10)) +  theme(text=element_text(size=12,  family="Gujarati Sangam MN")) + theme(axis.title.x = element_text(vjust = 0, size = 11), axis.title.y = element_text(vjust = 2, size = 11)) + theme(axis.text = element_text(color = "black", size = 9))

我怎样才能做到这一点?在线指南帮助不大!

【问题讨论】:

    标签: r ggplot2 plot data-visualization


    【解决方案1】:

    以后,请在您的控制台中通过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)
    

    【讨论】:

    • 谢谢!这真太了不起了!我还有另一个问题——我想用一条黑线连接一个三重奏的每个点。我知道 geom_segment 可以用于此,但对我来说还没有成功。我问过这个问题,但到目前为止没有答案——你能帮忙吗? :)
    • 您是否在此处发布了数据集?没有数据很难做到。
    猜你喜欢
    • 1970-01-01
    • 2015-06-10
    • 2018-02-04
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    相关资源
    最近更新 更多