2012-08-01 7 views
2

날짜의 한 세트를 보여 X- 축을 수정하는 것입니다 다음과 같이 z라는 데이터 프레임에 저장합니다. I는 X에 스택 차트를 만들고 ggplot2를 사용하여 동일한 스택 차트의 상단에 (Z)에 기초하여, 전체에 광고를 넣을 것을 시도하고은 가능한이 같은 데이터 프레임이 ggplot2

Month Value 
1 2010-01 600 
2 2010-02 700 
3 2010-03 800 
4 2010-04 900 
5 2010-05 800 
6 2010-06 900 

Z.

구문은 다음과 같습니다 :

내가 피하기 위해이 작업을 수행했다 (오류 : 지속적인 규모에 공급 이산 값) :

ggplot(server, aes(Date, Space)) + geom_bar(aes(fill=Server), stat="identity", position="stack") + theme_bw() + scale_x_discrete(name="Date") + scale_y_continuous("Space") + opts(axis.title.x = theme_text(face="bold", colour="#990000", size=15),axis.text.x = theme_text(angle=90), axis.title.y = theme_text(face="bold", colour="#990000", angle=90, size=15)) + geom_smooth(data=z,aes(Month,Value,group=1), method="lm", size=2, color="darkblue") 

이 있지만 작동

server$Date<-as.character(server$Date) 

다음이 실행 내 x 축상에는 두 세트의 데이터가 있는데, 매우 어수선하게 보입니다. x 데이터 프레임에서 날짜를 숨기거나 표시하지 않고 x 축에 z$Month 만 표시 할 수 있습니까?

scale_x_date(labels = date_format("%m-%Y")) 

을하지만이 작업을 수행 할 때 이제 모든 데이터 포인트에 대한 01-1970을 보여주는 x 축 :

나는 이것을 사용할 수 있습니다.

* 업데이트 * 다른 방식으로이 질문을하겠습니다. 스택 차트를 만들고 스택 맨 위에 geom_smooth()를 사용하여 선형 사용하여 총 사용량을 표시합니다. 나는 x 데이터 프레임을 사용하여 스택 차트를 만든 다음 총 값에 대한 다른 데이터 프레임을 만들고 z로 총 데이터 프레임을 기반으로 geom_smooth() 행을 작성한다고 생각했습니다. 이 방법으로 2 개의 데이터 값을 xaxis에 저장합니다.

이렇게하는 것이 아니라 x 데이터 프레임을 기반으로 스택 막대에 geom_smooth()를 그릴 수 있습니까?

는 데이터 프레임의 dput입니다 :

server <- structure(list(Date = structure(c(1325394000, 1325480400, 1325566800, 
1325653200, 1325739600, 1325826000, 1325912400, 1325998800, 1326085200, 
1326171600, 1326258000, 1326344400, 1326430800, 1326517200, 1326603600, 
1326690000, 1326776400, 1325394000, 1325480400, 1325566800, 1325653200, 
1325739600, 1325826000, 1325912400, 1325998800, 1326085200, 1326171600, 
1326258000, 1326344400, 1326430800, 1326517200, 1326603600, 1326690000, 
1326776400, 1325394000, 1325480400, 1325566800, 1325653200, 1325739600, 
1325826000, 1325912400, 1325998800, 1326085200, 1326171600, 1326258000, 
1326344400, 1326430800, 1326517200, 1326603600, 1326690000, 1326776400, 
1328072400, 1328158800, 1328245200, 1328331600, 1328418000, 1328504400, 
1328590800, 1328677200, 1328763600, 1328850000, 1328936400, 1329022800, 
1329109200, 1329195600, 1329282000, 1329368400, 1329454800, 1328072400, 
1328158800, 1328245200, 1328331600, 1328418000, 1328504400, 1328590800, 
1328677200, 1328763600, 1328850000, 1328936400, 1329022800, 1329109200, 
1329195600, 1329282000, 1329368400, 1329454800, 1328072400, 1328158800, 
1328245200, 1328331600, 1328418000, 1328504400, 1328590800, 1328677200, 
1328763600, 1328850000, 1328936400, 1329022800, 1329109200, 1329195600, 
1329282000, 1329368400, 1329454800, 1330578000, 1330664400, 1330750800, 
1330837200, 1330923600, 1331010000, 1331096400, 1331182800, 1331269200, 
1331355600, 1331442000, 1331524800, 1331611200, 1331697600, 1331784000, 
1331870400, 1331956800, 1330578000, 1330664400, 1330750800, 1330837200, 
1330923600, 1331010000, 1331096400, 1331182800, 1331269200, 1331355600, 
1331442000, 1331524800, 1331611200, 1331697600, 1331784000, 1331870400, 
1331956800, 1330578000, 1330664400, 1330750800, 1330837200, 1330923600, 
1331010000, 1331096400, 1331182800, 1331269200, 1331355600, 1331442000, 
1331524800, 1331611200, 1331697600, 1331784000, 1331870400, 1331956800 
), class = c("POSIXct", "POSIXt"), tzone = ""), Server = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ServerA", "ServerB", 
"ServerC"), class = "factor"), Space = c(100, 110, 110, 120, 
120, 130, 130, 140, 140, 150, 150, 160, 160, 170, 170, 180, 200, 
220, 240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 
480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 
740, 760, 780, 800, 820, 840, 860, 880, 100, 110, 110, 120, 120, 
130, 130, 140, 140, 150, 150, 160, 160, 170, 170, 180, 200, 220, 
240, 260, 280, 300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 
500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 
760, 780, 800, 820, 840, 860, 880, 550, 110, 560, 120, 570, 130, 
580, 140, 590, 150, 600, 160, 610, 170, 620, 180, 200, 550, 570, 
590, 610, 630, 650, 670, 690, 710, 730, 750, 600, 620, 640, 660, 
680, 700, 720, 740, 760, 780, 800, 820, 840, 860, 880, 900, 920, 
940, 960, 980, 1000, 1020, 1000)), .Names = c("Date", "Server", 
"Space"), row.names = c(NA, 153L), class = "data.frame") 



z <- structure(list(Month = c("2012-01", "2012-02", "2012-03"), Value = c(21140, 
21140, 32010)), .Names = c("Month", "Value"), row.names = c(NA, 
-3L), class = "data.frame") 
+1

작성 및 편집 질문 할 때 사용할 수있는 서식 도구에 가까운주의하십시오. – joran

+0

아무도 이것에 대한 입력이 있습니까? –

+0

StackOverflow에 오신 것을 환영합니다. 아마도 질문이나 문제를 보여주는 [재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 만든다면 사람들은 쉽게 찾을 수 있습니다. 대답 해주세요. 귀하의 경우에는'dput()'을 사용하여 데이터를 복제하고 질문에 게시하십시오. – Andrie

답변

1

당신이 날짜 (그리고 날짜 시간)로 작업하기 때문에, 당신은 찾을 쉽게 두 날짜 열이 as.Date 객체 경우 :

server$Date <- as.Date(server$Date) 
z$Month <- as.Date(paste0(z$Month, "-01")) 

ggplot(server, aes(Date, Space)) + 
    geom_bar(aes(fill=Server), stat="identity", position="stack") + 
    geom_point(data=z,aes(Month,Value,group=1), color="darkblue") + 
    geom_line(data=z,aes(Month,Value,group=1), color="darkblue") 

enter image description here

+0

Geom_line()이 아닌 geom_line()을 사용해야합니다. 또한이 오류가 발생합니다. 오류 : 연속 된 값으로 제공된 불연속 값 –

+0

문제가 해결되었다고 생각합니다. Andrie에게 감사드립니다. –

+0

@Adrie, 빠른 질문이 하나 있습니다. geom_bar (aes (x = Date, y = TableVolumeRecordCount/1000000, fill = Tablename), stat = "identity", position = "stack") 할 때, xaxis label은 00:00처럼 읽을 수 없다고 말합니다. geom_points()를 수행하면 xaxis에서 날짜를 볼 수 있습니다. 이것을 수정하여 xaxis에서 날짜를 읽을 수 있습니까? –