在ggplot2中截断密度图

6

我使用

frame <- read.table(paste('data', fname, sep="/"), sep=",", header=TRUE)
colnames(frame) <- c("pos", "word.length")
plot <- ggplot(frame, aes(x=pos, y=word.length)) + xlim(0,20) + ylim(0,20) + geom_density2d() + stat_density2d(aes(color=..level..))
png(paste("graphs/", fname, ".png", sep=""), width=600, height=600)
print(plot)
dev.off()

如何创建图表,但它们被截断了。我该如何解决这个问题?

http://ompldr.org/vZTN0eQ

我用来创建此图的数据:http://sprunge.us/gKiL


如果我编造一些从0到20范围的数据,我的绘图看起来很棒。也许你可以提供一些复制问题的数据?如果你省略xlimylim选项,ggplot会根据你的数据限制为你选择它们。我怀疑你的问题可能就在这里。 - Justin
限制条件会按照你传递的方式进行传递,0:20。因此,从3:10开始的数据看起来会被“截断”,因为它们没有延伸到图形的边缘。如果您提供一些数据,您可以得到更好的答案。我建议将数据放入一个数据框中,并使用facet_wrapfacet_grid进行绘图并修复比例尺。这样所有的图都在一起,使用同一个比例尺。 - Justin
感谢您添加一些数据,也许我仍然不理解问题,但我坚持认为 ggplot 正在按照您要求的方式进行操作。 您的数据具有 3:16 的 y 范围和 2:9 的 x 范围,这就是所绘制的内容。 但是,您还告诉 ggplot 您希望图形的限制从 0 到 20,这就是您链接的图形显示的内容。 - Justin
你可以这样做,但不是必须的。默认情况下,ggplot会根据提供的数据确定适当的范围。 - Justin
它们看起来很好,但在这种情况下,这是审美问题。我该如何更改 density_2d 将要操作的范围? - Reactormonk
显示剩余2条评论
1个回答

7
根据ggplot2书籍,您应该使用 scale_x_continuous(limits=c(1,20)) 而不是 xlim(1,20)

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