Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按面改变几何点大小的比例_R_Ggplot2_Facet Wrap - Fatal编程技术网

R 按面改变几何点大小的比例

R 按面改变几何点大小的比例,r,ggplot2,facet-wrap,R,Ggplot2,Facet Wrap,我使用带有facet_wrap的ggplot生成3个带有线性模型的并排图。此外,我还有另一个维度(我们称之为“z”),我希望通过改变绘图上点的大小来可视化 目前,我生成的图在所有3个面上保持相同比例的点大小。相反,我希望按面缩放点大小-这样,可以快速判断每个面哪个点包含最高的“z”值 有没有办法在不创建3个单独的绘图的情况下执行此操作?我在下面提供了我的数据样本和我使用的代码: x <- c(0.03,1.32,2.61,3.90,5.20,6.48,7.77,0.75,2.04,3.33

我使用带有facet_wrap的ggplot生成3个带有线性模型的并排图。此外,我还有另一个维度(我们称之为“z”),我希望通过改变绘图上点的大小来可视化

目前,我生成的图在所有3个面上保持相同比例的点大小。相反,我希望按面缩放点大小-这样,可以快速判断每个面哪个点包含最高的“z”值

有没有办法在不创建3个单独的绘图的情况下执行此操作?我在下面提供了我的数据样本和我使用的代码:

x <- c(0.03,1.32,2.61,3.90,5.20,6.48,7.77,0.75,2.04,3.33,4.62,5.91,7.20,8.49,0.41,1.70,3.00,4.28,5.57,6.86,8.15)
y <- c(650,526,382,110,72,209,60,559,296,76,48,64,20,22,50,102,176,21,20,25,5)
z <- c(391174,244856,836435,46282,40351,27118,17411,26232,59162,9737,1917,20575,1484,450,12071,13689,133326,1662,711,728,412)
facet <- c("A","A","A","A","A","A","A","B","B","B","B","B","B","B","C","C","C","C","C","C","C")
df <- data.frame(x,y,z,facet)

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(size=z)) + 
  geom_smooth(method="lm") +
  facet_wrap(~facet)

x我只需按每个
df$facet
df$z
的平均值

AverageFacet  <- df %>% group_by(facet) %>% summarize(meanwithinfacet= mean(z, na.rm=TRUE))
df <- merge(df, AverageFacet) 
df$pointsize<- df$z - df$meanwithinfacet
策划

ggplot(df, aes(x=x, y=y)) + 
        geom_point(aes(size=pointsize)) + 
        geom_smooth(method="lm") +
        facet_wrap(~facet)

看起来像这样,但不确定传说是什么

您也可以使用给定
z
的平均值与标准偏差的多少,而不是使用与平均值的绝对差值

AverageFacet  <- df %>% group_by(facet) %>% summarize(meanwithinfacet= mean(z, na.rm=TRUE), sdwithinfacet= sd(z, na.rm=TRUE))
df <- merge(df, AverageFacet) 
df$absoluteDiff<- df$z - df$meanwithinfacet
df$SDfromMean <- df$absoluteDiff / df$sdwithinfacet


ggplot(df, aes(x=x, y=y)) + 
        geom_point(aes(size=SDfromMean)) + 
        geom_smooth(method="lm") +
        facet_wrap(~facet)
AverageFacet%group_by(facet)%>%summary(meanwithinfacet=mean(z,na.rm=TRUE),sdwithinfacet=sd(z,na.rm=TRUE))

df我只需按每个
df$facet
df$z
的平均值

AverageFacet  <- df %>% group_by(facet) %>% summarize(meanwithinfacet= mean(z, na.rm=TRUE))
df <- merge(df, AverageFacet) 
df$pointsize<- df$z - df$meanwithinfacet
策划

ggplot(df, aes(x=x, y=y)) + 
        geom_point(aes(size=pointsize)) + 
        geom_smooth(method="lm") +
        facet_wrap(~facet)

看起来像这样,但不确定传说是什么

您也可以使用给定
z
的平均值与标准偏差的多少,而不是使用与平均值的绝对差值

AverageFacet  <- df %>% group_by(facet) %>% summarize(meanwithinfacet= mean(z, na.rm=TRUE), sdwithinfacet= sd(z, na.rm=TRUE))
df <- merge(df, AverageFacet) 
df$absoluteDiff<- df$z - df$meanwithinfacet
df$SDfromMean <- df$absoluteDiff / df$sdwithinfacet


ggplot(df, aes(x=x, y=y)) + 
        geom_point(aes(size=SDfromMean)) + 
        geom_smooth(method="lm") +
        facet_wrap(~facet)
AverageFacet%group_by(facet)%>%summary(meanwithinfacet=mean(z,na.rm=TRUE),sdwithinfacet=sd(z,na.rm=TRUE))

df下面的方法将z重新分配到它的刻面内的z分数

require(dplyr)
require(ggplot)
require(magrittr)
require(scales)

x <- c(0.03,1.32,2.61,3.90,5.20,6.48,7.77,0.75,2.04,3.33,4.62,5.91,7.20,8.49,0.41,1.70,3.00,4.28,5.57,6.86,8.15)
y <- c(650,526,382,110,72,209,60,559,296,76,48,64,20,22,50,102,176,21,20,25,5)
z <- c(391174,244856,836435,46282,40351,27118,17411,26232,59162,9737,1917,20575,1484,450,12071,13689,133326,1662,711,728,412)
facet <- c("A","A","A","A","A","A","A","B","B","B","B","B","B","B","C","C","C","C","C","C","C")

df <- data.frame(x,y,z,facet)
df %<>% 
    group_by(facet) %>% 
    mutate(z = scale(z)) # calculate point size within group

ggplot(df, aes(x=x, y=y, group = facet)) + 
    geom_point(aes(size=z)) + 
    geom_smooth(method="lm") +
    facet_wrap(~facet )
require(dplyr)
需要(ggplot)
需要(magrittr)
需要(天平)

x下面的方法将z重新分配到它的刻面内的z分数

require(dplyr)
require(ggplot)
require(magrittr)
require(scales)

x <- c(0.03,1.32,2.61,3.90,5.20,6.48,7.77,0.75,2.04,3.33,4.62,5.91,7.20,8.49,0.41,1.70,3.00,4.28,5.57,6.86,8.15)
y <- c(650,526,382,110,72,209,60,559,296,76,48,64,20,22,50,102,176,21,20,25,5)
z <- c(391174,244856,836435,46282,40351,27118,17411,26232,59162,9737,1917,20575,1484,450,12071,13689,133326,1662,711,728,412)
facet <- c("A","A","A","A","A","A","A","B","B","B","B","B","B","B","C","C","C","C","C","C","C")

df <- data.frame(x,y,z,facet)
df %<>% 
    group_by(facet) %>% 
    mutate(z = scale(z)) # calculate point size within group

ggplot(df, aes(x=x, y=y, group = facet)) + 
    geom_point(aes(size=z)) + 
    geom_smooth(method="lm") +
    facet_wrap(~facet )
require(dplyr)
需要(ggplot)
需要(magrittr)
需要(天平)

x尝试重新缩放每个方面的大小,以获取(0,1)中的值:


尝试重新缩放每个方面的大小,以获取(0,1)中的值:


任何答案都有效吗?请指出哪一个答案对延迟表示抱歉-所有3个答案都涉及在每个方面重新缩放我的z值,将新值附加到我的数据框,然后使用几何点(aes(大小))与我的新z争论。他们都成功地解决了我的问题。答案之间的差异存在于缩放方法中。最后,我选择了建议我使用其面内z分数缩放z值的答案。我认为这是统计上最优雅的答案。谢谢大家的帮助!这也是我的答案关于stackoverflow的第一个问题,所以我的upvotes还没有出现。有任何答案有效吗?请指出哪一个对延迟表示抱歉-所有3个答案都涉及在每个方面重新缩放我的z值,将新值附加到我的数据框中,然后使用geom_点(aes(大小))与我的新z争论。他们都成功地解决了我的问题。答案之间的差异存在于缩放方法中。最后,我选择了建议我使用其面内z分数缩放z值的答案。我认为这是统计上最优雅的答案。谢谢大家的帮助!这也是我的答案关于stackoverflow的第一个问题,所以我的投票还没有出现。