2014-10-19 5 views
1

Контекст: Я хочу представить путешествие по процессу.ggplot2 - График рисования линий по категориальной переменной

Образец данных:

____________________________________________________________________ 
|  Time  | ProcessNo (factor) | ProcessName (factor) | 
+------------------+------------------------+------------------------+ 
| 2014-08-01 |   1   |  Brainstorming  | 
| 2014-08-03 |   2   |  Estimation  | 
| 2014-08-04 |   1   |  Brainstorming  | 
| 2014-08-09 |   3   |  Construction  | 
| 2014-08-14 |   4   |  Rectifying  | 
+--------------------------------------------------------------------+ 

Я нарисовал график, используя ggplot2 с х = Время, у = ProcessName.

p <- ggplot(dfCheckpoints, aes(Time, ProcessName)) 
p <- p + geom_point() 

Проблема: Я хотел бы наложить линию, соединяющую процессы в хронологическом порядке. ProcessNo - это просто фактор-фактор переменной ProcessName, если это любая помощь.

Я попытался добавить новую строку:

p <- p + geom_line(data = dfCheckpoints, aes(x = Time, y = ProcessNo)) 

Но он добавляет дополнительные факторы, на оси Y.

Если есть другой способ, я тоже рад попробовать его.

Заранее благодарен!

+1

'dput (dfCheckpoints)' WLD быть полезным. – hrbrmstr

ответ

0

Рассматривая онлайн-документацию для geom_line, я думаю, вам нужна переменная группировки. Это дает то, о чем я думаю, что вы просили.

require("ggplot2") 
require("lubridate") 

dfCheckpoints$Time <- ymd(dfCheckpoints$Time) 
dfCheckpoints$ProcessName <- as.character(dfCheckpoints$ProcessName) 
dfCheckpoints$group <- 1 

p <- ggplot(dfCheckpoints, aes(Time, ProcessName, group = group)) + 
    geom_point() + geom_line() 
p 

И для тех, кто еще пытается это, вот dput() моей интерпретации данных:

structure(list(Time = structure(1:5, .Label = c("2014-08-01", 
"2014-08-03", "2014-08-04", "2014-08-09", "2014-08-14"), class = "factor"), 
    ProcessNo = structure(c(1L, 2L, 1L, 3L, 4L), .Label = c("1", 
    "2", "3", "4"), class = "factor"), ProcessName = structure(c(1L, 
    3L, 1L, 2L, 4L), .Label = c("Brainstorming", "Construction", 
    "Estimation", "Rectifying"), class = "factor")), .Names = c("Time", 
"ProcessNo", "ProcessName"), row.names = c(NA, -5L), class = "data.frame") 
Смежные вопросы