【问题标题】:Equal distance among all points on an axis轴上所有点之间的距离相等
【发布时间】:2015-08-17 11:29:15
【问题描述】:

我正在尝试绘制一个简单的散点图,如下所示:

我用于生成此图的最少代码如下:

ggplot(fig1c, aes(x=xvar, y=yvar)) +    
  scale_x_log10(breaks=unique(fig1c$xvar)) +
  scale_y_continuous(breaks=seq(0, 10, by=1), labels=as.character(seq(0, 10, by=1))) +   
  geom_point(aes(fill=Method, color=Method, shape=Method), size = 5, guides=FALSE) + 
  scale_colour_brewer(palette="Set1") + 
  geom_line(aes(fill=Method, color=Method)) +

我想要实现的是让 x 轴(5884、13957、...)上的所有点等距。 IE。我希望点 5884 和 13957 之间的间隔与 13957 和 21013 之间的大小相同,依此类推。有什么帮助吗?

谢谢

【问题讨论】:

    标签: r ggplot2 scatter-plot


    【解决方案1】:

    您可能希望将 x 值转换为因子。现在,R 假设您的 x 值是数字,因此在它们之间放置了适当的空间(5,884 和 13,957 之间的差异大于 21,013 和 28,708 之间的差异)。但是,您可能会将数字视为数据点的名称。如果您告诉 R 将数字视为因子或文本,它将在它们之间放置相等的间距。

    ggplot(fig1c, aes(x=as.factor(xvar), y=yvar)) +    
      scale_x_log10(breaks=unique(fig1c$xvar)) +
      scale_y_continuous(breaks=seq(0, 10, by=1), labels=as.character(seq(0, 10, by=1))) +   
      geom_point(aes(fill=Method, color=Method, shape=Method), size = 5, guides=FALSE) + 
      scale_colour_brewer(palette="Set1") + 
      geom_line(aes(fill=Method, color=Method)) +
    

    【讨论】:

      【解决方案2】:

      您的 x 值应转换为 ggplot 的因子,而不是将它们视为连续变量。此外,您应该取消该行:

      scale_y_continuous(breaks=seq(0, 10, by=1), labels=as.character(seq(0, 10, by=1)))
      

      最后你应该拥有的是:

      fig1c$xvar <- factor(fig1c$xvar)
      
      p <- ggplot(fig1c, aes(x=xvar, y=yvar)) 
      p <- p + geom_point(aes(fill=Method, color=Method, shape=Method), size = 5, guides=FALSE) 
      p <- p + scale_colour_brewer(palette="Set1") 
      p <- p + geom_line(aes(group=Method, color=Method))
      p
      

      【讨论】:

      • 可惜只能选择一个答案。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多