2017-02-06 1 views
0

편집 : 의견에 Haboryme에 의해 해결됨. 문제는 x와 y 대신 xlab과 ylab를 labs() (그래프 레이블 설명)의 키워드 인수 이름으로 사용하고 aes()의 두 번째 호출에서 color = 중복 사용 (지속성 설명 원래 전설의).R/gplot2의 누적 영역 플롯 레이블 및 범례 수정

R 및 ggplot2를 사용하여 일부 CSV 데이터에서 스택 영역 차트를 만들고 싶습니다. 예를 들어 파일 "test.png"에

library(ggplot2) 
library(reshape) 
df <- read.csv('test.csv') 
df <- melt(df, id="Year") 
png(filename="test.png") 
gg <- ggplot(df,aes(x=as.numeric(Year),y=value)) + 
    # Add a new legend 
    scale_fill_discrete(name="Series", labels=c("Foo bar", "Baz quux")) + 
    geom_area(aes(colour=variable,fill=variable)) + 
    # Change the axis labels and add a title 
    labs(title="Test",xlab="Year",ylab="Values") 
print(gg) 
dev.off() 

결과, :

In file "test.csv": 
Year,Column with long name 1,Column with long name 2 
2000,1,1 
2001,1,1.5 
2002,1.5,2 

이 코드 (this GIS.SE question에 대한 답변을 모방)를 실행

Stacked-area plot with wrong axis labels and extra legend

문제 : 내 축 레이블을 변경하려는 시도가 무시되고 내 새 범례 (R Cookbook's suggestions에서 빌린 코드 사용)가 추가되지 않았습니다. (이상하게 recolored) 기본 하나. (R cookbook에서 제공하는 다른 솔루션 (예 : fill = FALSE)은 거의 같은 일을합니다.) 데이터 프레임을 편집하는 방법을 사용하지 않을 것입니다 (예 : read.csv)는 열 머리글의 공백을 대체하므로 기본 레이블이 올바르게 표시됩니다. 어떻게해야합니까?

+1

대신에 + labs (title = "Test", x = "Year", y = "Values")'를 사용하고 aes()에 색상을 떨어 뜨리면 아무 것도 가져 오지 않습니다. – Haboryme

+0

@Haboryme 이것은 완벽하게 작동했습니다! 훌륭한! 이것을 자신의 답변으로 게시하면 동의로 표시됩니다. –

답변

2
ggplot(df,aes(x=as.numeric(Year),y=value)) + 
    scale_fill_discrete(name="Series", labels=c("Foo bar", "Baz quux")) + 
    geom_area(aes(fill=variable)) + 
    labs(title="Test",x="Year",y="Values") 

따라서 geom_area()에만 색상 윤곽과의 aes()의 인수 colour 여기 플롯에 자동으로 추가되지는 않습니다.