У меня есть уровни факторов, такие как «node002» «node004» «node006» «node016» «node017» «node018», которые строятся по датам. Я пытаюсь подложить данный уровень фактора за период, используя geom_rect
. Для дат я могу сделать что-то вроде ymin=as.Date("8-Apr-2014", format="%d-%b-%Y")
.Использование уровней факторов с geom_rect
Можно ли оговорить, скажем, ymin
с точки зрения уровней факторов? Если да, то как это сделать?
Вот еще немного информации, чтобы попытаться прояснить этот вопрос:
данные выглядят следующим образом:
17-Mar-2014 node004 node016 node018 node020 node025 node034 node041
15-Sep-2014 node002 node016 node061 node098
8-Sep-2014 node002 node016 node020 node061
1-Sep-2014 node002 node016 node020 node061
25-Aug-2014 node002 node020 node061
11-Aug-2014 node006 node020
4-Aug-2014 node020
28-Jul-2014 node020
21-Jul-2014 node020
14-Jul-2014 node016 node020 node061
7-Jul-2014 node016 node020 node061
30-Jun-2014 node016 node020 node061
23-Jun-2014 node016 node020 node061
7-Apr-2014 node004 node018 node025 node034 node041 node057
10-Mar-2014 node004 node016 node018 node020 node025 node034 node041
3-Mar-2014 node004 node016 node018 node020 node025 node034 node041
19-Aug-2013 node016 node018 node025 node057 node065
12-Aug-2013 node025 node057 node080
5-Aug-2013 node020 node025 node080
29-Jul-2013 node020 node025 node080
22-Jul-2013 node025 node080
15-Jul-2013 node025 node080
8-Jul-2013 node025
1-Jul-2013 node025
24-Jun-2013 node025
17-Jun-2013 node025
27-May-2013 node057
13-May-2013 node018 node025 node057 node080
6-May-2013 node017 node018 node025 node057
29-Apr-2013 node018
22-Apr-2013 node018 node020 node025 node050 node080
15-Apr-2013 node018 node020 node025 node080
8-Apr-2013 node018 node020 node025 node080
1-Apr-2013 node018 node020 node025 node080
25-Mar-2013 node017 node080
18-Mar-2013 node047
11-Mar-2013 node025
25-Feb-2013 node034
18-Feb-2013 node034
11-Feb-2013 node025 node034 node061
4-Feb-2013 node025 node034 node061
28-Jan-2013 node025 node034 node061
21-Jan-2013 node025 node034 node050 node061
14-Jan-2013 node025 node034 node061
7-Jan-2013 node025 node061*emphasized text*
16-Jun-2014 node016 node020 node061
9-Jun-2014 node016 node020 node061
2-Jun-2014 node016 node020 node061
26-May-2014 node016 node020 node061
19-May-2014 node020 node061
12-May-2014 node016 node020 node061
5-May-2014 node020
28-Apr-2014 node004 node018 node025 node034 node041 node057
21-Apr-2014 node004 node016 node018 node025 node034 node041 node057
14-Apr-2014 node004 node016 node018 node025 node034 node041 node057
31-Mar-2014 node004 node018 node025 node034 node041 node057
24-Mar-2014 node004 node018 node020 node034 node041 node057
17-Feb-2014 node004 node016 node018 node034
10-Feb-2014 node004 node018 node020
3-Feb-2014 node004 node018 node025
27-Jan-2014 node004 node018 node020 node025
20-Jan-2014 node004 node018 node020 node025
13-Jan-2014 node004 node018 node020 node025 node041
6-Jan-2014 node016 node020 node025 node041 node047 node082
30-Dec-2013 node016 node020 node025 node041
23-Dec-2013 node016 node020 node025 node041 node057
16-Dec-2013 node020 node025 node041 node087
9-Dec-2013 node016 node018 node020 node025 node065
2-Dec-2013 node018 node020 node025
25-Nov-2013 node020 node025
18-Nov-2013 node020 node025
11-Nov-2013 node020
4-Nov-2013 node020
28-Oct-2013 node016 node020 node025
21-Oct-2013 node025
14-Oct-2013 node017 node020 node025
7-Oct-2013 node020 node025
30-Sep-2013 node016 node020 node025
23-Sep-2013 node020 node025 node057
16-Sep-2013 node025 node057
9-Sep-2013 node025
2-Sep-2013 node016 node025
26-Aug-2013 node016 node018 node025 node057 node065
18-Aug-2014 node002 node006 node020
Код я пытался выглядит так
require(ggplot2)
require(reshape2)
require(scales)
df <- read.table("~/tmp/ipmi_data.txt",fill=T)
flatdata <- melt(df,id.vars="V1")
flatdata <- flatdata[!flatdata$value=="",]
flatdata <- flatdata[order(flatdata$value),]
flatdata$value <- factor(flatdata$value,levels=sort(levels(flatdata$value)))
ggplot(flatdata[flatdata$value != "",]) +
geom_point(aes(x=value,y=as.Date(V1,format="%d-%b-%Y")),size=3,alpha=0.9) +
scale_x_discrete(name="Node") +
ylab("Date") +
geom_rect(aes(ymin=as.Date("8-Apr-2014", format="%d-%b-%Y"),
ymax=as.Date("30-Apr-2014", format="%d-%b-%Y"),
xmin="node002",xmax="node098"),
fill="red", alpha=0.25) +
coord_flip()
Результирующие график имеет прямоугольник по всем уровням факторов:
Однако, я хотел бы иметь отдельный прямоугольник для определенных уровней, например, только для «node004» и «node057» за определенный интервал дат.
Итак, вопрос в том, можно ли использовать индекс уровня в качестве координаты для определения вертикальной протяженности прямоугольника, и если да, то каким образом?
Просьба [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a -great-r-воспроизводимый пример) с входными данными образца. Кроме того, если это возможно, включите эскиз нужного выхода. Мне немного непонятно, по крайней мере, именно то, что тебе нужно. Вы привязываетесь к дате как непрерывное или дискретное значение? – MrFlick
Объекты, классифицированные по дате, в принципе целые, поэтому вы можете попытаться принудить вас к переменным фактора к «числовому». Нет гарантий того, что результат будет значимым, но в этом случае порядок заказов по умолчанию предполагает, что он может. –