gpt4 book ai didi

R 使用 ggplot 添加对交互图的调整

转载 作者:行者123 更新时间:2023-12-03 23:08:40 25 4
gpt4 key购买 nike

我想修改这个图:

  • 缩短行以仅显示从 -1 SD 到 + 1SD 的权重变量
  • 用正方形或三角形符号为每行加盖
  • 更改 x 轴以显示低权重和高权重,而不是数字和刻度线。
  • library(tidyverse)
    dat=mtcars
    mod <- lm(mpg ~ gear * wt, data=dat)

    apatheme=theme_bw()+
    theme(panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(),
    panel.border=element_blank(),
    axis.line=element_line(),
    text=element_text(family='Times'),
    legend.title=element_blank())

    p=ggplot(dat, aes(x = wt, y = mpg, size = gear))+
    geom_blank()+
    labs(x = 'Vehicle Weight', y = 'Vehicle MPG')+
    scale_size_continuous(guide = FALSE)+
    geom_abline(aes(intercept=33.965, slope=-4.3985, linetype='-1SD Gear'))+
    geom_abline(aes(intercept=42.2767, slope=-7.3095, linetype='+1SD Gear'))+
    scale_linetype_manual(values=c('dotted','dashed','solid'),
    breaks=c('-1SD Gear','Mean Gear','+1SD Gear'),name='Simple\nSlope')+
    apatheme
    p

    这是它目前产生的

    enter image description here

    我试图让它更接近这个 APA 风格的版本

    enter image description here

    最佳答案

    由于您想根据均值的 SD 差异进行绘图,因此首先要计算您感兴趣的变量的均值和 SD。然后,您可以构建一个数据框,其中包含要为 gear 的特定值包含的点。和 wt .

    不使用数字表示斜率/截距,而是 predict mpg 的值基于 gearwt使用您的模型 mod .

    我根据您想要的数字添加了一些因素/标签。

    library(tidyverse)
    library(ggplot2)

    dat=mtcars
    mod <- lm(mpg ~ gear * wt, data=dat)

    dat_sum <- do.call(data.frame, aggregate(. ~ 1, dat, function(x) c(mean = mean(x), sd = sd(x))))

    df <- data.frame(
    gear = with(dat_sum, c(gear.mean - gear.sd, gear.mean + gear.sd, gear.mean - gear.sd, gear.mean + gear.sd)),
    gear_lab = factor(c("Low Gears", "High Gears", "Low Gears", "High Gears"), levels = c("Low Gears", "High Gears")),
    wt = with(dat_sum, c(wt.mean - wt.sd, wt.mean - wt.sd, wt.mean + wt_sd, wt.mean + wt.sd)),
    wt_lab = factor(c("Low Weight", "Low Weight", "High Weight", "High Weight"), levels = c("Low Weight", "High Weight")))

    df$mpg <- predict(mod, df)

    apatheme=theme_bw()+
    theme(panel.grid.major=element_blank(),
    panel.grid.minor=element_blank(),
    panel.border=element_blank(),
    axis.line=element_line(),
    text=element_text(family='Times'),
    legend.title=element_blank())

    ggplot(df, aes(x = wt_lab, y = mpg, group = gear_lab))+
    geom_point(aes(shape = gear_lab))+
    geom_line(aes(linetype = gear_lab))+
    ylim(0,30)+
    labs(x = 'Vehicle Weight', y = 'Vehicle MPG')+
    scale_shape_manual(values = c(15, 17))+
    scale_linetype_manual(values = c('dotted', 'dashed'))+
    apatheme

    剧情

    APA style plot

    关于R 使用 ggplot 添加对交互图的调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60591014/

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