【问题标题】:R: Density plot vs Density plot in ggplot2R:ggplot2中的密度图与密度图
【发布时间】:2012-08-24 14:54:15
【问题描述】:

我正在尝试在 R 中绘制一些密度图。我最初使用的是密度图,但我更改为 ggplot2 中的密度图,因为我在视觉上更喜欢 ggplot2。

所以我使用密度图函数做了一个密度图,并在 ggplot2 中做了一个密度图(见下文),但我发现这些图并不相同。看起来 ggplot2(右图)中的一些 y 值已丢失或丢失。这有什么特别的原因吗?如何使 ggplot 与命运图(左图)相同。

代码:

library(ggplot2)
library(grid)
par(mfrow=c(1,2))

# define function to create multi-plot setup (nrow, ncol)
vp.setup <- function(x,y){
 grid.newpage()
 pushViewport(viewport(layout = grid.layout(x,y)))
}

# define function to easily access layout (row, col)
vp.layout <- function(x,y){
  viewport(layout.pos.row=x, layout.pos.col=y)
}


vp.setup(1,2)

dat <- read.table(textConnection("
low high
10611.0 14195.0
10759.0 14437.0
10807.0 14574.0
10714.0 14380.0
10768.0 14448.0
10601.0 14239.0
10579.0 14218.0
10806.0 14510.0
"), header=TRUE, sep="\t")

plot(density(dat$low))

dat.low = data.frame(low2 = c(dat$low), lines = rep(c("low")))

low_plot_gg = (ggplot(dat.low, aes(x = low2, fill = lines)) +
 stat_density(aes(y = ..density..)) + 
 coord_cartesian(xlim = c(10300, 11000)) 
)
print(low_plot_gg, vp=vp.layout(1,2))

【问题讨论】:

  • 基本图形和网格图形的混合并不完全成功。
  • @Harpal 您可能还想咨询this answer

标签: r ggplot2


【解决方案1】:

根据一些试验和错误,它看起来像你想要的

 + xlim(c(10300,11000))

而不是

 + coord_cartesian(xlim = c(10300, 11000)) 

coord_cartesian 扩展了绘图的范围,但根本不改变绘图内部的内容...

【讨论】:

  • D'oh,所以错过了这里的明显内容。感谢您的帮助。
【解决方案2】:

这不是失去价值的问题。函数plot(density()) 继续平滑极值,但对于您的小数据集来说不是很准确。对于更大的数据集,这两个图将是相同的。

【讨论】:

    猜你喜欢
    • 2015-12-26
    • 2021-05-25
    • 1970-01-01
    • 2017-05-30
    • 2012-07-17
    • 2016-08-25
    • 2012-07-15
    • 2018-06-30
    • 2021-05-21
    相关资源
    最近更新 更多