Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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/ggplot2中可能存在的行为图?_R_Ggplot2_Graph - Fatal编程技术网

R/ggplot2中可能存在的行为图?

R/ggplot2中可能存在的行为图?,r,ggplot2,graph,R,Ggplot2,Graph,希望你们能帮助我,我正在拼命地尝试创建一个类似于附件的图表 完整的竖条表示所有区域共享的经验(可能触发每个区域的事件)。我为情节缺乏色彩而道歉。就我目前的目的而言,每个标签上的标签并不重要,重要的是我以后能够添加它们 下面是一些示例数据。我目前正在将所有垂直条标记为“运动一”,将所有较小的条标记为“运动二”,以尽可能地保持清晰: move_one <- data.frame( start = c(10 , 1000, 3000) , end = c(250, 1500

希望你们能帮助我,我正在拼命地尝试创建一个类似于附件的图表

完整的竖条表示所有区域共享的经验(可能触发每个区域的事件)。我为情节缺乏色彩而道歉。就我目前的目的而言,每个标签上的标签并不重要,重要的是我以后能够添加它们

下面是一些示例数据。我目前正在将所有垂直条标记为“运动一”,将所有较小的条标记为“运动二”,以尽可能地保持清晰:

move_one <-
  data.frame(
    start = c(10 , 1000, 3000)
    , end = c(250, 1500, 4500)
    , label = "Movement One"
  )

move_two <-
  data.frame(
    ind = rep(1:3, each = 3)
    , start = c(275, 1600, 3800
                , 20, 1010, 3010
                , 240, 1400, 4400)
    , end =   c(295, 1750, 4400
                , 30, 1700, 3600
                , 290, 1800, 4500)
    , label = "Movement Two"
  )

分别(这些与这里手绘的图表不匹配)。

这是R。没有如果。只有如何。“-西蒙·布隆伯格

基本上,我们只需要将每个组件分别传递到
ggplot
。首先,我们使用
geom\u rect
创建底层垂直条。然后使用
geom\u hline
为每个区域添加水平线。最后,用另一个
geom\u rect
将小方框添加到顶部。使用轴标签和任何其他主题设置进行抛光

ggplot() +
  geom_rect(
    aes(xmin = start
        , xmax = end
        , fill = label
        , ymin = 0
        , ymax = 4)
    , move_one
  ) +
  geom_hline(aes(yintercept = ind)
             , move_two) +
  geom_rect(
    aes(xmin = start
        , xmax = end
        , fill = label
        , ymin = ind - 1/3
        , ymax = ind + 1/3)
    , move_two
  ) +
  xlab("Time (milliseconds)") +
  ylab("Area")
给予


您能否至少使用两种不同的颜色来对应第1步和第2步。也很难理解垂直“带”对应什么。抱歉,这不是很清楚,我在火车上只带了一支笔,不幸的是,我试着用对角线和水平阴影来显示它们的区别——诚然,这并不清楚。垂直条表示两个运动之一的实例(运动1=对角线着色,运动2=水平着色)。水平条是查看场景中某个区域的实例,本质上我希望覆盖这两个数据集。至于笑话,我不确定你指的是什么。我会尝试编辑这个问题,但你不应该通过编辑来更改基本问题(从基本图形移动到特定方面)。现在你有了基础,问一个新问题来跟进细节(以及两者之间的联系)。感谢这个标记,它给了我动力和灵感,我需要最后一次尝试这个项目。我一直在玩你的例子,但我只是想澄清代码的一些部分。在ind=rep(1:3,each=3)中,我是否会更改1:3以增加区域数?我大约有37岁。另外,每个=3实现了什么?在每一条区域线上,目前有3个绿色街区,与此相关吗?在我的实际数据中,每行上都会有不同数量的绿色块。目前我正在尝试在y轴上使用文本标签,而不是0,1,2..2!我假设你已经在某个地方拿到了数据。如果您正在对其进行数字化(即,从纸质记录转录),我不会在R中输入数据——我会将数据保存为csv(例如,在LibreOffice、Google Sheets或Excel中)。要查看每段代码的作用,请分别运行它们(
each
告诉
rep
要在一行中放置它正在重复的向量的每个分量多少次;使用
times
将整个向量重复多次)。像这样输入真实数据会很快变得混乱(并且容易出错)。对于数据标签,可以使用因子作为y轴。然而,这将使它更难控制其背后的垂直杆。相反,我将使用因子索引(与因子级别关联的数字)进行绘图,然后修改比例以显示标签。e、 g.
scale\u x\u continuous(breaks=1:length(levels(move\u two$ind)),labels=levels(move\u two$ind))
  ind start  end        label
1   1   275  295 Movement Two
2   1  1600 1750 Movement Two
3   1  3800 4400 Movement Two
4   2    20   30 Movement Two
5   2  1010 1700 Movement Two
6   2  3010 3600 Movement Two
7   3   240  290 Movement Two
8   3  1400 1800 Movement Two
9   3  4400 4500 Movement Two
ggplot() +
  geom_rect(
    aes(xmin = start
        , xmax = end
        , fill = label
        , ymin = 0
        , ymax = 4)
    , move_one
  ) +
  geom_hline(aes(yintercept = ind)
             , move_two) +
  geom_rect(
    aes(xmin = start
        , xmax = end
        , fill = label
        , ymin = ind - 1/3
        , ymax = ind + 1/3)
    , move_two
  ) +
  xlab("Time (milliseconds)") +
  ylab("Area")