gpt4 book ai didi

r - 从 ggplot 中提取数据

转载 作者:行者123 更新时间:2023-12-03 07:46:26 26 4
gpt4 key购买 nike

我使用数据框中的ggplot2 geom_histogram绘制了一个图。请参阅下面的示例并链接到 ggplot 直方图 Need to label each geom_vline with the factors using a nested ddply function and facet wrap

我现在需要制作一个数据框,其中包含用于生成上面 ggplot 的汇总数据。

Sector2 Family  Year    Length
BUN Acroporidae 2010 332.1300496
BUN Poritidae 2011 141.1467966
BUN Acroporidae 2012 127.479
BUN Acroporidae 2013 142.5940556
MUR Faviidae 2010 304.0405
MUR Faviidae 2011 423.152
MUR Pocilloporidae 2012 576.0295
MUR Poritidae 2013 123.8936667
NTH Faviidae 2010 60.494
NTH Faviidae 2011 27.427
NTH Pocilloporidae 2012 270.475
NTH Poritidae 2013 363.4635

最佳答案

要获取实际绘制的值,您可以使用函数ggplot_build(),其中参数是您的绘图。

p <- ggplot(mtcars,aes(mpg))+geom_histogram()+
facet_wrap(~cyl)+geom_vline(data=data.frame(x=c(20,30)),aes(xintercept=x))

pg <- ggplot_build(p)

这将创建列表,其中一个子列表名为data。该子列表包含具有绘图中使用的值的数据帧,例如,对于直方图,它包含 y 值(与 count 相同)。如果您使用构面,则 PANEL 列会显示使用了哪些构面值。如果您的图中有多个 geom_ ,那么数据将包含每个数据帧 - 在我的示例中,有一个用于直方图的数据帧,另一个用于 vlines 的数据帧。

head(pg$data[[1]])
y count x ndensity ncount density PANEL group ymin ymax
1 0 0 9.791667 0 0 0 1 1 0 0
2 0 0 10.575000 0 0 0 1 1 0 0
3 0 0 11.358333 0 0 0 1 1 0 0
4 0 0 12.141667 0 0 0 1 1 0 0
5 0 0 12.925000 0 0 0 1 1 0 0
6 0 0 13.708333 0 0 0 1 1 0 0
xmin xmax
1 9.40000 10.18333
2 10.18333 10.96667
3 10.96667 11.75000
4 11.75000 12.53333
5 12.53333 13.31667
6 13.31667 14.10000

head(pg$data[[2]])
xintercept PANEL group xend x
1 20 1 1 20 20
2 30 1 1 30 30
3 20 2 2 20 20
4 30 2 2 30 30
5 20 3 3 20 20
6 30 3 3 30 30

关于r - 从 ggplot 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com