【问题标题】:R: ggplot: plot shows vertical lines instead of time courseR:ggplot:绘图显示垂直线而不是时间进程
【发布时间】:2016-06-01 08:56:08
【问题描述】:

我试图获得一个简单的图,显示两组的担忧持续时间超过 6 天。但是,我得到的是垂直线,而不是显示时间进程的线。

这是我的数据的样子:

> head(alldays_dur)
            ParticipantID  Session     Day   Time    Worry_duration   group
1              1              2         1     71804      15     intervention
2              1              4         1     56095      5      intervention
3              2              2         1     36739      15     intervention
4              2              4         1     45013      10     intervention
5              2              5         1     51026      5      intervention

这是我的数据结构

> str(alldays_dur)
'data.frame':   2620 obs. of  10 variables:
 $ ParticipantID : num  113 113 113 113 113 113 113 113 113 113 ...
 $ Session       : num  9 10 11 12 14 15 16 21 22 24 ...
 $ Day           : Factor w/ 6 levels "1","2","3","4",..: 2 2 2 2 2 2 2 3 3 
 $ Time          : num  37350 42862 47952 51555 61499 ...
 $ Worry_duration: num  5 5 5 5 10 0 5 5 5 5 ...
 $ group         : Factor w/ 2 levels "Intervention group",..: 1 1 1 1 1 1 

我已经尝试了以下代码:

p <- ggplot(alldays_dur, aes(x=Day, y=Worry_duration, group=1)) +
    geom_line() +
    labs(x = "Day", 
    y = "Mean worry duration in minutes per day")
print(p)

但是,我得到以下情节:plot

在阅读了有关此主题的一些早期帖子后,我已将 group=1 包含在代码中。然而,它并没有像我希望的那样帮助我。 您可能对我有一些有用的提示吗?先感谢您。

附言。如果帖子有任何不清楚之处,我很抱歉,这是我第一次在 stackoverflow 上发帖,所以我还不太熟悉所有的“帖子选项”。

【问题讨论】:

  • 试试group = group
  • 谢谢。我之前尝试过,我看到了一些变化,但它并没有摆脱垂直线
  • 那么如果您发布一些数据(使用dput()),我们可以更轻松地帮助您解决问题。
  • 这些线只是因为您每天都在连接所有点。如果您将geom_line 替换为geom_point,您可能会获得更多信息。
  • 对于每个独特的组合 DayGroup,您有不同的 Session。例如,对于 group = "intervention"Day = "1",您的 Worry_duration 为 5 和 15。使用geom_line 将链接所有这些点,如您所见绘制垂直线。如果您只希望每个 Day 得到一个点,请汇总您的数据。

标签: r ggplot2 dataframe


【解决方案1】:

您需要先汇总您的数据,例如ddply

require(plyr) # ddply
require(ggplot2) # ggplot

# Creating dataset
raw_data = data.frame(Day = sample(c(1:6),100, replace = T),
                  group = sample(c("group_1", "group_2"),100, replace = T),
                  Worry_duration = sample(seq(0,30,5), 100, replace = T))

# Summarize
DF = ddply(raw_data, c("Day", "group"), summarize, 
           Worry_duration.mean = mean(Worry_duration, na.rm = T))

# Plot
ggplot(DF, aes(x = Day, y = Worry_duration.mean, group = group, color = group)) +
geom_line()+ xlab("Day") + ylab("Mean worry duration in minutes per day")

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多