简体   繁体   English

如何:在 R 中为 3 个分类变量和一个连续变量创建 plot?

[英]How to: Create a plot for 3 categorical variables and a continuous variable in R?

I would like to create a plot using R, preferably by using ggplot.我想使用 R 创建一个 plot,最好使用 ggplot。 I have the following variables to visualize, most of them binary:我有以下变量要可视化,其中大部分是二进制的:

Trial: cong/incong试用:cong/incon

Sentence: him/himself造句:他/他自己

Condition: normal/slow状态:正常/慢

Accuracy: number准确度:数字

SE: number SE:数字

structure(list(TrialType = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L), .Label = c("congruent", "incongruent"), class = "factor"), 
    SentenceType = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L
    ), .Label = c("him", "himself"), class = "factor"), Condition = structure(c(1L, 
    2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("normal_speech", 
    "slow_speech"), class = "factor"), MeanAccuracy = c(0.794871794871795, 
    0.762820512820513, 0.967948717948718, 0.967948717948718, 
    0.237179487179487, 0.342105263157895, 0.942307692307692, 
    0.83974358974359), SE = c(0.0342056016493384, 0.0430264468743046, 
    0.0389087806837746, 0.0496183045476835, 0.0135583881898854, 
    0.0163760608630386, 0.0170869868584354, 0.0311270245470197
    )), class = "data.frame", row.names = c(NA, -8L))

The SE stands for the standard error, meaning that I would like to present the error bars around the accuracy score. SE 代表标准误差,这意味着我想在准确度分数周围呈现误差线。

I figured that my best option is to make two bar plots, One separately for each condition with accuracy on the x-axis.我认为我最好的选择是制作两个条形图,每个条件分别一个,在 x 轴上具有准确性。 Then, four bars representing both possible combinations of sentence and trial, showing the accuracy in height and error bars presented around this to reflect the uncertainty.然后,四个条形代表句子和试验的两种可能组合,显示高度的准确性,并在此周围显示误差条以反映不确定性。

How could I make such a graph?我怎么能做出这样的图表? Or, does anyone think that this is not the right type of graph and then what would be (and how to plot it...)?或者,有没有人认为这不是正确的图表类型,然后会是什么(以及如何 plot 它......)?

Thanks in advance!提前致谢!

Using some simulated data based on the description you shared, you can try:根据您分享的描述使用一些模拟数据,您可以尝试:

library(ggplot2)
library(dplyr)
library(tidyr)
#Data
df <- data.frame(Trial=rep(c('cong','incong'),4),
                 Sentence= rep(c('him','himself'),4),
                 Condition=rep(c('normal','slow'),4),
                 Accuracy=runif(8,0,1),
                 SE=runif(8,0,10),stringsAsFactors = F)
#Plot 1
df %>% pivot_longer(-c(Trial,Sentence,Condition)) %>%
  ggplot(aes(x=name,y=value,fill=Condition))+
  geom_bar(stat = 'identity')+
  facet_wrap(.~Trial+Sentence,scales = 'free')

Output: Output:

在此处输入图像描述

Or this:或这个:

#Plot 2
df %>% pivot_longer(-c(Trial,Sentence,Condition)) %>%
  ggplot(aes(x=name,y=value,fill=Condition))+
  geom_bar(stat = 'identity')+
  facet_grid(Trial~Sentence,scales = 'free')

Output: Output:

在此处输入图像描述

Further details and data are necessary to understand your issue.了解您的问题需要更多详细信息和数据。

Are you perhaps looking for something like this?您是否正在寻找类似的东西?

library(ggplot2)

ggplot(df, aes(TrialType, MeanAccuracy, fill = SentenceType)) +
  geom_col(position = position_dodge(width = 1), color = "gray50") +
  geom_errorbar(aes(ymin = MeanAccuracy - SE, 
                    ymax = MeanAccuracy + SE), width = 0.25,
                position = position_dodge(width = 1)) +
  scale_fill_manual(values = c("gold", "deepskyblue4")) +
  facet_grid(.~Condition, switch = "x") +
  theme_bw() +
  theme(strip.placement = "outside",
        strip.background = element_blank(),
        panel.border = element_blank(),
        panel.spacing = unit(0, "points"),
        axis.line = element_line())

在此处输入图像描述

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

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