ggplot을 사용하여 변수와 속성을 그립니다. ggplot의 인자 중 하나를 무시 R
내가 플롯에서 '정상'요소를 생략 단지 '특이점'을 제시하고자하고 할 것 : 코드의
require(ggplot2)
require(reshape2)
df <- data.frame(HMn25_30$avg,HMn25_30$h)
df[3] = c("Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Normal",
"Outlier",
"Outlier",
"Outlier",
"Outlier",
"Outlier",
"Outlier",
"Normal",
"Outlier",
"Outlier",
"Normal",
"Normal",
"Outlier",
"Outlier",
"Normal",
"Normal"
)
names(df)[1] <- 'Node 25'
names(df)[3] <-'Results'
df.m <- melt(df, names(df)[2:3], names(df)[1])
df.m$Results <- factor(df.m$Results)
df.m$HMn25_30.h <- strptime(as.character(df.m$HMn25_30.h), format = "%Y-%m-%d %H:%M:%S")
p <- ggplot(df.m, aes(x = HMn25_30.h, y = value, group = variable, color = variable))
p <- p + scale_shape_manual(values=c(20,22))
p <- p + geom_point(aes(shape = Results), cex=9, color= "blue3")
p <- p + theme(axis.text.x = element_text(angle = 90, hjust = 1, size=13,color="darkred"))
p <- p + scale_color_manual(values=c("Red"))
p <- p + ylim(-1,8)
p <- p + theme_bw()
p <- p + xlab('Date and Time')
p <- p + ylab('Temprature')
p <- p + ggtitle("Temporal Outliers of Node 25 ") + theme(plot.title = element_text(lineheight=3, face="bold", color="black", size=29))
p <- p + theme(legend.text = element_text(colour="darkred", size = 25))
p <- p + theme(legend.title = element_text(colour="brown", size=25))
p <- p + theme(axis.title.x = element_text(face="bold", colour="darkred", size=16),axis.text.x = element_text(angle=90, vjust=0.5, size=26))
p <- p + theme(axis.title.x = element_text(face="bold", colour="darkred", size=14),axis.text.y = element_text(angle=00, vjust=0.5, size=20))
p <- p + labs(x = "Date-Time [UTC] \ 2007-09-30 ", y = "Temprature ")
p <- p + theme(axis.title.y = element_text(size = rel(2.1), angle = 90))
p <- p + theme(axis.title.x = element_text(size = rel(2.1), angle = 00))
p <- p + geom_line(size=1.9)
p
결과 : 나는 다음과 같은 코드를 사용하여 ggplot 및 계수를 사용하고 있습니다 .
샘플 데이터 :
Node 25 HMn25_30.h Results
1 0.26000000 2007-09-29 23:00:00 Normal
2 0.01500000 2007-09-30 00:00:00 Normal
3 -0.35333333 2007-09-30 01:00:00 Normal
4 -0.42333333 2007-09-30 02:00:00 Normal
5 -0.73333333 2007-09-30 03:00:00 Normal
6 -0.65000000 2007-09-30 04:00:00 Normal
7 -0.40000000 2007-09-30 05:00:00 Normal
8 -0.09166667 2007-09-30 06:00:00 Normal
9 0.19000000 2007-09-30 07:00:00 Normal
10 0.63500000 2007-09-30 08:00:00 Normal
11 1.05500000 2007-09-30 09:00:00 Outlier
12 1.26833333 2007-09-30 10:00:00 Outlier
13 2.28166667 2007-09-30 11:00:00 Outlier
14 4.17000000 2007-09-30 12:00:00 Outlier
15 6.34000000 2007-09-30 13:00:00 Outlier
16 6.56666667 2007-09-30 14:00:00 Outlier
17 6.74666667 2007-09-30 15:00:00 Normal
18 5.82833333 2007-09-30 16:00:00 Outlier
19 6.36500000 2007-09-30 17:00:00 Outlier
20 4.60333333 2007-09-30 18:00:00 Normal
21 4.98000000 2007-09-30 19:00:00 Normal
22 2.65666667 2007-09-30 20:00:00 Outlier
23 4.90833333 2007-09-30 21:00:00 Outlier
24 5.05000000 2007-09-30 22:00:00 Normal
25 4.56500000 2007-09-30 23:00:00 Normal
코드의 문제는 그것이 특이하지 않은 장소를 무시한다는 것입니다. 전체 라인을 가지고 싶지만 Normal의 심볼을 무시하십시오 –
그래서 'Outlier' ** 데이터 **를 라인으로 나타내 길 원하지만 그 라인의 심볼에 대한 심볼을 원하지 않습니까? – SlowLearner
아니요, 이상 값 데이터와 일반 데이터를 모두 선으로 그려야합니다. 기호를 통해 특이점 만 표시. –