2015-01-21 1 views
0

ggplot 해킹을 조금하려고합니다. 내 막대 차트에 색을 지정하고 하나의 변수 (변수 = Open.Burning)로 '범례'하지만 다른 변수에 의해 스택 주위에 barchart 레이블과 상자를 넣고 싶습니다. 나는 그것의 대부분을 가지고 있지만 변수 Open에 따라되는 전설을 해킹에 아직도 고투하고있다. 굽기. 나는 현재지고있어 무엇채우기보다 다른 변수에 대한 ggplot 범례

library(ggplot2) 
library(scales) 
library(grid) 
muns = data.frame(cbind(
    'Open.Burning'=c(0,0,0,0,1), 
    'Population.2010'=c(486,4130,843,2648,3950), 
    'Municipality'=c('Alert Bay', 'Mount Waddington RD-uninc', 'Port Alice', 'Port McNeill', 'Port Hardy'), 
    'Regional.District'=rep('Mount Waddington', 5), 
    'mp'=c(243.0, 2551.0, 5037.5, 6783.0, 10082.0), 
    'Open.Burning.Label'=c('Bylaw', 'No Bylaw', 'No Bylaw', 'No Bylaw', 'No Bylaw')), stringsAsFactors=FALSE) 
muns$Population.2010 <- as.numeric(muns$Population.2010) 
muns$mp <- as.numeric(muns$mp) 

fp = factor(muns[,'Open.Burning'], 
      labels=c('white', 'lightblue1'), 
      levels=c(0,1)) 
fill.vals = as.character(fp) 
names(fill.vals) = muns$Municipality 

ggplot(muns, aes(x=Regional.District, y=Population.2010, fill=Municipality)) + 
    geom_bar(stat='identity', width=0.6, colour = "gray32") + 
    xlab('Open Burning') + ylab("Population 2010") + 
    scale_y_continuous(labels = comma) + 
    geom_text(aes(y = muns$mp, label=muns$Municipality), colour = "gray32", size = 3) + 
    scale_fill_manual(values=fill.vals, breaks=muns$Municipality, labels=muns$Open.Burning.Label) + 
    ## to add a border the legend (but not on the chart) 
    guides(fill = guide_legend(reverse=TRUE, override.aes = list(colour = "black"))) + 
    theme(text=element_text(size=12), 
     axis.text.x = element_blank(), 
     legend.title=element_blank() 
) 

: 내가 원하는 무엇

current plot

는 얻을 : wanted plot

정말 이러한 목표를 달성하는 방법을 모른다. 어떤 아이디어?
감사합니다.

+0

내가 재현하지 아직도 포스트 – DatamineR

+0

재현 할 수 없습니다. 항상 깨끗한 세션에서 테스트하십시오. – hailes

+0

편집, 감사합니다 @RStudent – joran

답변

1

Open.Bylaw.Label을 채우고 색상 요소를 수정하면됩니다. 사용자가 제공 무엇

library(ggplot2) 
library(scales) 
library(grid) 
muns = data.frame(cbind(
    'Open.Burning'=c(0,0,0,0,1), 
    'Population.2010'=c(486,4130,843,2648,3950), 
    'Municipality'=c('Alert Bay', 'Mount Waddington RD-uninc', 'Port Alice', 'Port McNeill', 'Port Hardy'), 
    'Regional.District'=rep('Mount Waddington', 5), 
    'mp'=c(243.0, 2551.0, 5037.5, 6783.0, 10082.0), 
    'Open.Burning.Label'=c('Bylaw', 'No Bylaw', 'No Bylaw', 'No Bylaw', 'No Bylaw')), stringsAsFactors=FALSE) 
muns$Population.2010 <- as.numeric(muns$Population.2010) 
muns$mp <- as.numeric(muns$mp) 

fp = factor(muns[,'Open.Burning.Label'], 
      labels=c('white', 'lightblue1'), 
      levels=c('No Bylaw','Bylaw')) 
fill.vals = as.character(fp) 
names(fill.vals) = muns$Open.Burning.Label 

ggplot(muns, aes(x=Regional.District, y=Population.2010, fill=Open.Burning.Label)) + 
    geom_bar(stat='identity', width=0.6, colour = "gray32") + 
    xlab('Open Burning') + ylab("Population 2010") + 
    scale_y_continuous(labels = comma) + 
    geom_text(aes(y = muns$mp, label=muns$Municipality), colour = "gray32", size = 3) + 
    scale_fill_manual(values=fill.vals, breaks=muns$Open.Burning.Label, labels=muns$Open.Burning.Label) + 
    ## to add a border the legend (but not on the chart) 
    guides(fill = guide_legend(reverse=TRUE, override.aes = list(colour = "black"))) + 
    theme(text=element_text(size=12), 
     axis.text.x = element_blank(), 
     legend.title=element_blank() 
)