繁体   English   中英

2D直方图的平均线?

[英]Average line for 2D Histogram?

我是“ R”的新手,并且有一个问题。我目前正在研究在R上制作2D直方图。材料不一定重要,但是如何在2D直方图上绘制平均线。 我正在运行的代码是这样的:

load("mydatabin.RData")
# Color housekeeping
library(RColorBrewer)
rf <- colorRampPalette(rev(brewer.pal(11,'Spectral')))
r <- rf(32)

# Create normally distributed data for plotting
x <- mydata$AGE
y <- mydata$BP
df <- data.frame(x,y)

# Plot
plot(df, pch=16, col='black', cex=0.5)

这给了我一个散点图,然后将其转换为2D直方图:

library(ggplot2)

# Default call (as object)
p <- ggplot(df, aes(x,y))
h3 <- p + stat_bin2d()
h3

# Default call (using qplot)
qplot(x,y,data=df, geom='bin2d')

之后,我要做:

h3 <- p + stat_bin2d(bins=25) + scale_fill_gradientn(colours=r)
h3

添加颜色。

因此,从这里如何绘制数据的平均线。

如果有人可以告诉我如何使用mydatebin.RData绘制如下所示的热图:

热图图

谢谢。

您可以在ggplot2使用geom_hlinegeom_vline ,将y / xintercept用作参数来绘制线。 在您的情况下,该参数可以是绘制平均线的一列的平均值。 有关示例,请参见代码。 我还尝试了两种不同的绘制2D直方图的方法。 尽管我删除了colorBrewer,但是您的看上去更好,更精确。

library(ggplot2)

# Create normally distributed data for plotting
x <- rnorm(10000)
y <- rnorm(10000)
df <- data.frame(x,y)

# stat_density2d way, with average lines
p1 <- ggplot(df,aes(x=x,y=y))+
  stat_density2d(aes(fill=..level..), geom="polygon") +
  scale_fill_gradient(low="navy", high="yellow") +
  # Here go average lines
  geom_hline(yintercept = mean(df$y), color = "red") +
  geom_vline(xintercept = mean(df$x), color = "red") +
  # Just to remove grid and set background color
  theme(line = element_blank(),
        panel.background = element_rect(fill = "navy"))
p1

在此处输入图片说明

# stat_bin2d way, with average lines
p2  <- ggplot(df, aes(x,y)) +
  stat_bin2d(bins=50) +
  scale_fill_gradient(low="navy", high="yellow") +
  # Here go average lines
  geom_hline(yintercept = mean(df$y), color = "red") +
  geom_vline(xintercept = mean(df$x), color = "red") +
  # Just to remove grid and set background color
  theme(line = element_blank(),
        panel.background = element_rect(fill = "navy"))
p2

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM