2014-09-24 5 views
1

저는 특정 테마 옵션을 전역 적으로 설정하고 ggplot 객체에 대한 미학을 조정하는 함수를 작성하려고합니다 (ggthemr-package과 유사).ggplot의 글로벌 스케일 미학/색상을 변경/설정하는 것이 좋습니까?

나는 다음과 같은 코드 조각과 테마 옵션을 수정할 수 있습니다

sjtheme <- theme_grey() + 
    theme(axis.text.x = element_text(angle=axis.angle.x, size=rel(axis.size.x), colour=axis.color.x), 
     axis.text.y = element_text(angle=axis.angle.y, size=rel(axis.size.y), colour=axis.color.y), 
     axis.title = element_text(size=rel(axis.title.size), colour=axis.title.color), 
     axis.ticks = element_line(colour=axis.ticks.color), 
     axis.ticks.length = unit(axis.ticks.length, "cm"), 
     plot.title = element_text(size=rel(title.size), colour=title.color), 
     plot.background = element_rect(colour=plot.bordercol, fill=plot.backgroundcol), 
     panel.background = element_rect(colour=panel.bordercol, fill=panel.backcol), 
     panel.grid.minor = element_line(colour=panel.minor.gridcol), 
     panel.grid.major = element_line(colour=panel.major.gridcol)) 
theme_set(sjtheme) 

기하 구조 기본값은 예를 들어, 변경 될 수 있습니다

update_geom_defaults('boxplot', list(fill = geom.colors, alpha = geom.alpha, outlier.colour = geom.colors)) 

이 두 가지 모두 제대로 작동하므로 ggplot 개체를 만들 때마다 테마와 기하학 옵션이 적용됩니다.

하지만 어떻게 이것을 비늘로 처리하면 바/도트/선 색상이 새로운 기본값이됩니까? https://github.com/cttobin/ggthemr/blob/master/R/theme_scales.R

그러나이 방법은 크랑 제출 정책을 위반 지구 환경을 수정합니다

ggthemr 패키지의 솔루션이있다. "set_scale_defaults"(최신 ggplot 버전에서 제거됨) 또는 this posting 또는 this posting과 같이 웹에서 검색 eninge을 통해 발견 된 모든 제안은 작동하지 않습니다.

그래서 사용자의 글로벌 환경을 변경하지 않는 배율 기본값을 변경할 수 있습니까?

답변

2

단순히 관련 규모를 다시 정의 할 수 있습니다, 솔루션 작동하는 경우에

scale_colour_discrete <- function(...) 
    scale_colour_brewer(..., palette="Set1") 
+0

, 다른 경우에는 그렇지 않습니다. 그러나, 언제 그리고 왜 패턴을 알아 내지 못했습니까? scale_fill ...을 덮어 쓰면 피하는 막대가있는 플롯이 수정 된 테마를 적용하지 않습니다. 그러나, 수동으로'+ scale_fill ... '을 ggplot-object에 추가하면, scale_fill exists라는 경고 메시지가 겹쳐 쓰입니다. 그렇다면 왜 내 재정의 척도가 적용되지 않습니까? 흠 ... 테마 옵션을 통해 기하학 색을 설정할 수 있다면 좋을 것입니다. 이것은 완벽하게 작동하는 것 같습니다. 필자는 플로팅 기능에 "바 색상"매개 변수를 유지할 것입니다. – Daniel

+0

예제없이 말하기는 어렵습니다 ... 테마 대 기온 기본값에 관한 귀하의 의견에 관해서는 전적으로 동의하고 과거 몇 번 그 라인을 따라 제안했습니다. 그것은 불행하게도 발생하지 않을 것이고 ggplot2는 더 이상 개발되지 않습니다. – baptiste

+0

사실 예가 도움이 될 것입니다. 그러나이 모든 것들이 내 패키지에 통합되어 있지만 최신 코드를 GitHub에 적용 할 수 있으므로 소스 코드를 확인할 수 있습니다.이 코드는 너무 많은 작업 일 수 있습니다. 그래서이 질문을 "일반" 방법. BTW, ggplot2가 더 이상 개발되지 않는다는 것을 어디서 읽었습니까? – Daniel

관련 문제