轴上所有点之间的距离相等

Equal distance among all points on an axis

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

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

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 之间的大小相同,依此类推。有帮助吗?

谢谢

您可能希望将 x 值转换为因数。现在,R 假定您的 x 值是数字,因此在它们之间放置适当的 space(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)) +

您的 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