2016-11-02 1 views
1

I는 다음 데이터 프레임 df 가지고표준 편차를 모양으로 표시하는 방법은 무엇입니까?

structure(list(queue = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("XXX1", 
"XXX2", "XXX3", "XXX4", 
"XXX5", "XXX6", "XXX7", 
"XXX8", "XXX9", "XXX10"), class = "factor"), 
    hour = c(8, 9, 10, 11, 12, 13), num_at = c(5, 10.6923076923077, 
    8.35294117647059, 7.74285714285714, 10.0769230769231, 9.34615384615385 
    ), num_wt = c(1.8, 8.28571428571429, 11.3478260869565, 11.2121212121212, 
    17.5185185185185, 6.68421052631579),num_wt_se = c(0.8, 0.25, 1.3, 1.4, 
    1.5, 2.6),num_at_se = c(1.2, 1.2, 1.3, 1.2, 
    1.1, 2.3)), .Names = c("queue", 
"hour", "num_at", "num_wt","num_at_se","num_wt_se"), row.names = c(NA, 6L), class = "data.frame") 

I는 두 줄 곡선 도표를 작성을, 1은 제 2 대응한다 num_at 값, num_wt에 대응한다.

library("dplyr") 
library("tidyr") 
library("ggplot2") 

p <- df[df$queue == "XXX1",] %>% 
      gather(key, num, num_wt, num_at) %>% 
      ggplot(aes(x=hour, y=num, colour=key)) + 
      geom_smooth(span = 0.3) + 
      scale_color_manual(labels = c("Line 1", "Line 2"), values = c("#F8AA5A", "#BD63BD")) + 
      labs(title = "Title", 
       x = "Hour", 
       y = "Value", 
       color = "") 
p 

는 지금은 num_wt 및 대응 num_wt_senum_at_se에 저장되어 num_at에 대한 표준 편차를 보여주고 싶어요. 표준 편차를 선이 아닌 쉐이프로 묘사하고 싶습니다. 내가 어떻게 해? 나는 그러나 내 경우에는 아무것도 표시되지 않습니다, 가능한 솔루션에 대한 인터넷 검색이 하나를 발견 : 데이터 집합을 가정

stat_smooth(method="loess", span=0.1, se=TRUE, aes(fill=key), alpha=0.3) +

+0

당신이'geom_violin을 의미합니까 시도? – roman

+0

@roman : 그렇게 보입니다. 그러나 같은 차트에서 +/-'num_at_se'와 +/-'num_wt_se' 모두에 대해 정의하는 방법은 무엇입니까? – FiofanS

답변

0

가 D라고는 당신이하지 gather()을, 어떻게이

ggplot(d, aes(x=hour, y=num_at)) + 
    geom_ribbon(aes(ymax = num_at + num_at_se, 
        ymin = num_at - num_at_se), 
       fill = grey(0.5), alpha = 0.5) + 
    geom_line() 
에 대한 당신이 gather() 단계를 유지하려는 경우

다음`) (이

dd <- d %>% 
    gather(variable, value, -(1:2)) %>% 
    separate(variable, c("type", "measurement"), "t") %>% 
    spread(measurement, value) 
colnames(dd)[4:5] <- c("value", "se") 

ggplot(dd, aes(x=hour, y=value)) + 
    geom_ribbon(aes(ymax = value + se, 
        ymin = value - se, 
        fill = type), 
       alpha = 0.5) + 
    geom_line(aes(colour = type)) 
+0

'num_wt_se'에 다른 색상을 가진 또 다른'geom_ribbon'을 추가해야합니까? – FiofanS

+0

'geom_line()'대신'geom_smooth (span = 0.3)'을 사용하고 싶습니다. 도형 (예 :'geom_ribbon')도 부드럽게 할 수 있습니까? 또한,'num_wt'와'num_at'을위한 별도의 선 곡선을 만들기 위해'gather'를 사용합니다. 이 방법을 유지하거나 적어도 하나의 차트에 모든 커브를 표시 할 수 있어야합니다. – FiofanS

+0

그것이 나라면 순수하게 미적 효과를 위해 부드럽게하지 않을 것입니다. 항상 데이터를 표시하십시오 :-) 데이터를 '모델링'하고 모델을 그려야하는 특정 이유가있는 경우이를 수행하십시오. 의도가 무엇인지 더 자세히 설명하면 도움이됩니다. – roman

관련 문제