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

8
我将尝试绘制一个类似于下面的简单散点图: 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个回答

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)) +

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

很遗憾只能选择一个答案。谢谢! - lukas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接