不使用ggpaired连接观察点(点和线)

问题描述 投票:2回答:1

我使用geom_bar创建了条形图,其中x轴为“组”(女性,男性),y轴为“值”。分组进一步细分为“会话”,以便男性和女性都有“会话1”和“会话2”(即,总共四个小节)。

由于所有参与者都参加了会议1和2,因此我在四个条形图的每个条形图上覆盖了一个圆点图(geom_dot),以表示各个数据。

我现在正在尝试在会话1和2之间连接所有参与者的观测值(“ PID”)。换句话说,应该在x-的“男性”部分上连接几组两点的线。轴(即每个参与者)和“女性部分”。

我尝试使用“ geom_line”(如下),但无济于事(相反,它在“男性”中间创建了一条垂直线,在“女性”中间创建了一条垂直线)。我不太确定如何解决此问题。

请参见下面的代码:

ggplot(data_foo, aes(x=factor(Group),y=Values, colour = factor(Session), fill = factor(Session))) + 
          geom_bar(stat = "summary", fun.y = "mean", position = "dodge") + 
          geom_dotplot(binaxis = "y", stackdir = "center", dotsize = 1.0, position = "dodge", fill = "black") +
          geom_line(aes(group = PID), colour="dark grey") +
          labs(title='My Data',x='Group',y='Values') +
          theme_light() 

样本数据(.txt)

data_foo <- readr::read_csv("PID,Group,Session,Values
P1,F,1,14
P2,F,1,13
P3,F,1,16
P4,M,1,18
P5,F,1,20
P6,M,1,27
P7,M,1,19
P8,M,1,11
P9,F,1,28
P10,F,1,20
P11,F,1,24
P12,M,1,10
P1,F,2,26
P2,F,2,21
P3,F,2,19
P4,M,2,13
P5,F,2,26
P6,M,2,15
P7,M,2,23
P8,M,2,23
P9,F,2,30
P10,F,2,21
P11,F,2,11
P12,M,2,19")
ggplot2 plot bar-chart geom-bar
1个回答
2
投票

您遇到的麻烦是您想通过几组躲闪。您的geom_line不知道如何将Group变量除以session。这是解决此问题的两种方法。方法1可能是最“ ggploty”方法,也是一种在不使可视化文件过于拥挤的情况下添加另一个分组的巧妙方法。对于方法2,您需要更改x变量

1)使用facet

2)使用interaction为每个Group分割会话。定义右栏顺序的级别

我也改用了geom_point,因为geom_dot是直方图的一种特定类型。我通常会建议对此类绘图使用箱线图这样的值,因为条形更适合于诸如计数之类的特定度量。

方法1:构面

library(ggplot2)
ggplot(data_foo, aes(x = Session, y = Values, fill = as.character(Session))) +
  geom_bar(stat = "summary", fun.y = "mean", position = "dodge") + 
  geom_line(aes(group = PID)) +
  geom_point(aes(group = PID), shape = 21, color = 'black') +
  facet_wrap(~Group)

“”

reprex package(v0.3.0)在2020-01-20创建

方法2:在x变量中创建一个交互项。请注意,您需要手动订购因子水平。

data_foo <- data_foo %>% mutate(new_x = factor(interaction(Group,Session), levels = c('F.1','F.2','M.1','M.2')))

ggplot(data_foo, aes(x = new_x, y = Values, fill = as.character(Session))) + 
  geom_bar(stat = "summary", fun.y = "mean", position = "dodge") +
  geom_line(aes(group = PID)) +
  geom_point(aes(group = PID), shape = 21, color = 'black') 

“”

reprex package(v0.3.0)在2020-01-20创建

但是所有内容在视觉上都不是很吸引人。

© www.soinside.com 2019 - 2024. All rights reserved.