R +;ggplot中的几何图形密度2d()

R +;ggplot中的几何图形密度2d(),r,ggplot2,R,Ggplot2,我对R语言非常陌生,所以如果有任何错误,请纠正我!我需要学习 我最近使用ggplot2包在RStudio中创建了一个图形 现在我有两个问题 首先,我对等高线后面的数据点非常感兴趣。据推测,为了让程序画出这些线,必须有一系列底层数据点允许程序这样做 我希望探索是否有可能提取这些数据点 其次,如果有人能告诉我ggplot2中+geom_density_2d()函数背后的基本数学原理,那就太好了 下面是我用来创建图表的代码 ggplot(read.Alteryx("Office", mode="da

我对R语言非常陌生,所以如果有任何错误,请纠正我!我需要学习

我最近使用ggplot2包在RStudio中创建了一个图形

现在我有两个问题

首先,我对等高线后面的数据点非常感兴趣。据推测,为了让程序画出这些线,必须有一系列底层数据点允许程序这样做

我希望探索是否有可能提取这些数据点

其次,如果有人能告诉我ggplot2中+geom_density_2d()函数背后的基本数学原理,那就太好了

下面是我用来创建图表的代码

ggplot(read.Alteryx("Office", mode="data.frame"),aes(x=Chances,y=Defensive,colour=Team)) + 
  facet_wrap( ~ Team, ncol=2) + 
  geom_density_2d() + 
  scale_colour_manual(values = c("Leicester City" = "#1b378b", "Tottenham Hotspur" = "#011657", 
                                 "Arsenal" = "#d02320", "Manchester City" = "#8ac7ff")) + 
  theme_bw()  + 
  theme(panel.background=element_rect(fill="White"))  + 
  theme(plot.background=element_rect(fill="White"))  + 
  theme(panel.border=element_rect(colour="White"))  + 
  theme(panel.grid.major=element_line(colour="gray48",size=0.2))  + 
  scale_x_continuous(minor_breaks=0, breaks=seq(14,26,12),limits=c(14,26))  + 
  scale_y_continuous(minor_breaks=0, breaks=seq(50,100,50),limits=c(50,100))  + 
  theme(axis.text.x=element_text(size=7,colour="#535353",face="bold"))  + 
  theme(axis.text.y=element_text(size=7,colour="#535353",face="bold"))  + 
  theme(axis.ticks=element_blank())  + 
  theme(legend.position="none")  + 
  ggtitle("Pass completion % (Y) v Pass length M (X) for each game – EPL Top 4")  + 
  theme(plot.title=element_text(face="bold",colour="#3C3C3C",size=10))  + 
  ylab("")  + 
  xlab("") + 
  theme(axis.title.x=element_text(size=11,colour="#535353",face="bold",vjust=-.5))  + 
  geom_hline(yintercept=50,size=0.2,colour="gray48") + 
  geom_vline(xintercept=14,size=0.2,colour="gray48")  + 
  theme(strip.text.x = element_text(size=0, face="bold"),
        strip.background = element_rect(colour="White", fill="White"))  + 
  geom_point(size = 3)  + 
  theme(panel.margin = unit(3, "lines"))  + 
  geom_rug(sides="trbl", size = 0.5)

您是否查看了
geom\u density\u 2d
的帮助页面?它命名它调用以生成估计值的函数(
MASS::kde2d
)。您可以查看该函数的帮助页面以获取参考。除了允许您直接计算密度值的
MrFlick
方法外,您还可以使用
ggplot\u build
函数从plot对象中获取密度值。例如,如果绘图对象是
p
,则执行
pb=ggplot\u build(p)
。然后等高线的数据将位于
pb$data
子列表中的一个数据框中。我将查看这些答案!非常感谢。eipi10你的回答似乎正是我想要的,我只需要找出答案!很高兴能帮上忙。如果您有任何后续问题,请回来编辑您的问题。此外,如果您确实有任何后续问题,那么如果您提供与代码配套的示例数据(更一般地说,如果您提供了示例数据),将更容易提供帮助。我刚刚尝试了ggplot_构建方法,它工作得非常好!感谢您的回复和提示:)您是否查看了
geom\u density\u 2d
的帮助页面?它命名它调用以生成估计值的函数(
MASS::kde2d
)。您可以查看该函数的帮助页面以获取参考。除了允许您直接计算密度值的
MrFlick
方法外,您还可以使用
ggplot\u build
函数从plot对象中获取密度值。例如,如果绘图对象是
p
,则执行
pb=ggplot\u build(p)
。然后等高线的数据将位于
pb$data
子列表中的一个数据框中。我将查看这些答案!非常感谢。eipi10你的回答似乎正是我想要的,我只需要找出答案!很高兴能帮上忙。如果您有任何后续问题,请回来编辑您的问题。此外,如果您确实有任何后续问题,那么如果您提供与代码配套的示例数据(更一般地说,如果您提供了示例数据),将更容易提供帮助。我刚刚尝试了ggplot_构建方法,它工作得非常好!感谢您的回复和提示:)