반응형
ggplot2에서 로그 색상 스케일을 수행하는 기본 제공 방법이 있습니까?
다음은 비닝 된 밀도 플롯의 예입니다.
require(ggplot2)
n <- 1e5
df <- data.frame(x = rexp(n), y = rexp(n))
p <- ggplot(df, aes(x = x, y = y)) + stat_binhex()
print(p)
휴식 시간이 로그 간격이되도록 색상 스케일을 조정하는 것이 좋지만 시도해보십시오.
my_breaks <- round_any(exp(seq(log(10), log(5000), length = 5)), 10)
p + scale_fill_hue(breaks = as.factor(my_breaks), labels = as.character(my_breaks))
의 결과 Error: Continuous variable () supplied to discrete scale_hue.
그것은 휴식을 보인다는 마음에 범주 변수로 디자인 요소 (아마도?) 등을 기대하고있다?
답변으로 게시 할 기본 제공되지 않은 해결 방법이 있지만을 (를) 사용하는 scale_fill_hue
동안 잃어 버릴 수 있다고 생각 하며 내가 놓친 것이 확실한지 알고 싶습니다.
예! 이전에 놓친에 대한 trans
논쟁 이 있습니다 scale_fill_gradient
. 이를 통해 적절한 범례 및 색상 척도, 멋지고 간결한 구문으로 솔루션을 얻을 수 있습니다. p
질문에서 사용 및 my_breaks = c(2, 10, 50, 250, 1250, 6000)
:
p + scale_fill_gradient(name = "count", trans = "log",
breaks = my_breaks, labels = my_breaks)
내 다른 대답은 데이터의 더 복잡한 기능에 가장 잘 사용됩니다. Hadley의 의견은 하단의 예제에서이 답변을 찾도록 격려했습니다 ?scale_gradient
.
또 다른 방법은 stat_summary_hex
다음 에서 사용자 정의 함수를 사용하는 것입니다 .
ggplot(cbind(df, z = 1), aes(x = x, y = y, z = z)) +
stat_summary_hex(function(z){log(sum(z))})
이것은 이제의 일부 ggplot
이지만 원래 사용자 정의를 제공 한이 답변 에서 @kohske의 멋진 코드에서 영감을 받았습니다 stat_aggrhex
. ggplot> 2.0 버전에서는 위의 코드 (또는 다른 답변)를 사용하십시오.
ggplot(cbind(df, z = 1), aes(x = x, y = y, z = z)) +
stat_aggrhex(fun = function(z) log(sum(z))) +
labs(fill = "Log counts")
이 플롯을 생성하려면.
반응형
'developer tip' 카테고리의 다른 글
존재와 정의의 차이점은 무엇입니까? (0) | 2020.12.11 |
---|---|
애플리케이션 내에서 언어 (로케일)를 변경 한 후 활동을 새로 고치는 방법 (0) | 2020.12.11 |
FXML 컨트롤러 클래스에 액세스 (0) | 2020.12.11 |
Python ftplib로 FTP를 통해 파일을 다운로드하는 방법 (0) | 2020.12.11 |
Autofac-InstancePerHttpRequest 대 InstancePerLifetimeScope (0) | 2020.12.11 |