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

时间:2015-06-03 10:05:17

标签: r ggplot2 scatter-plot

我正在尝试绘制一个像这样的简单散点图: enter image description here

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

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,...)等间距。即我希望点5884和13957之间的间隔与13957和21013之间的大小相同,依此类推。有什么帮助吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您可能希望将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)) +

答案 1 :(得分:3)

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