【问题标题】:ggplot2 graph x axis and line labelsggplot2 图形 x 轴和线标签
【发布时间】:2014-06-23 12:50:16
【问题描述】:

我正在使用这些数据 https://www.dropbox.com/s/aqt7bdhzlwdsxl2/summary_exp1.csv

还有如下代码:

pd <- position_dodge(.1)
ggplot(data=summary.200.exp1, aes(x=Time, y=Length, colour=Genotype, group=Genotype)) + 
    geom_errorbar(aes(ymin=Length - se, ymax=Length + se), colour="black", width=.1,         position=pd) +
  geom_line(position=pd) +
  geom_point(aes(shape=Genotype),position=pd, size=3) +
  ylab("leaf segment width (mm)") +
  xlab("Time") +
   theme(axis.title = element_text(size=14,face="bold"), 
        axis.text = element_text(size=14),
        strip.text.y = element_text(size=14))

我需要做以下修改:

  1. 调整 x 轴范围以消除 y 轴与time0 处绘制的数据之间以及Time22 与图形边缘之间的空间。我查看了文档并尝试了这个: scale_x_discrete(limits=c("0","22")),但它不起作用。
  2. 修改标签,使图表上的每条线都标有不同的颜色,“基因型”和图例被删除。为此,我尝试了 geom_text(aes(colour=Genotype)) 的各种选项,但我也无法开始工作。

我将不胜感激。 非常感谢

【问题讨论】:

    标签: r ggplot2 axis-labels


    【解决方案1】:
    1. 您可以通过在比例参数中添加expand = c(0, 0) 来消除绘图和轴之间的空间:scale_x_discrete(expand = c(0, 0))
    2. 您可以通过添加show_guide=FALSE 来消除图例,例如geom_line 代码的一部分。

    编辑:

    我认为您正试图在一张图中绘制很多内容。例如,误差条相互重叠很多以获得可读的图。在这种情况下使用构面可能是一个好主意(在我看来)。以下代码(其中将数据框命名为dat):

    ggplot(data=dat, aes(x=Time, y=Length, colour=Genotype)) + 
      geom_line() +
      geom_point(aes(shape=Genotype), size=3) +
      scale_shape_manual(values=c(19,17,15,8,13,6,12,4)) +
      geom_errorbar(aes(ymin=Length-se, ymax=Length+se, colour=Genotype), width=.2) +
      guides(colour=FALSE, shape=FALSE) +
      facet_wrap(~Genotype, ncol=4)
    

    这个情节的结果:

    【讨论】:

    • 感谢 Jaap,非常感谢。您对如何获取标签有任何帮助吗(我假设 geom_text 是必需的,但是当我使用上面在#2 中解释的代码时,图表会消失)。此外,当我按照您的建议使用 show_guide = FALSE 时,我得到两个基因型符号消失(CD 和 RIL4),但文本保留在图例中,其他符号保留在图例中。
    • 符号消失的原因是shape刻度只能处理6个离散值。如果您有更多,则需要手动指定它们。此外,我认为在您的情况下使用方面是明智的。请参阅我的更新答案。