我正在尝试绘制一个像这样的简单散点图:
我用于生成此图的最小代码如下:
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之间的大小相同,依此类推。有什么帮助吗?
谢谢
答案 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