Doldurma renginin, bölmenin alt ucuna bağlı olarak değiştiği bir histogram yapmak istiyorum. manual doldurmak istemiyorum. Bu answer umut verici görünüyor, ancak başarılı bir histogram ve iki değer (degrade olmayan) renk şemasına geçiş yapamıyorum. Çözümün geom_histogram(fill=)
içinde ifelse
mantığı olabileceğine inanıyorum, ancak bin başlangıç değerine nasıl erişeceğimi bilmiyorum. Örneğin, aşağıdaki histogramda, yüksek gelirli müşterileri göstermek için 100.000 $ 'ın üzerinde gelir kutularını renklendirmek istiyorum. Histogram koşullu dolgu rengi
library(ggplot2)
library(scales)
n <- 10000
cust <- data.frame(cust_id=1:n,cust_rev <- rexp(n,.00001))
# I want to use a log scale for my tick marks and bin breaks
powers <- function(base,exp) sapply(1:exp, function(exp) base^exp)
ggplot(cust, aes(cust_rev)) +
geom_histogram(color="black",fill="light blue", binwidth=1/3) +
scale_x_log10(labels=comma, breaks=powers(10,8)) +
scale_y_continuous(labels=comma) +
xlab("Customer Revenue") + ylab("Number of Customers") +
ggtitle("Distribution of Customer Value")
Ayrıca, ikinci bir geom_histogram() ile bir
workaround çalıştı, ancak başarısız oldu.
ggplot(cust, aes(x=cust_rev)) +
geom_histogram(color="black",fill="light blue", binwidth=1/3) +
geom_histogram(data=subset(cust,cust_rev>100000),
color="black",fill="red", binwidth=1/3) +
scale_x_log10(labels=comma, breaks=powers(10,8)) +
scale_y_continuous(labels=comma) +
xlab("Customer Revenue ($)") + ylab("Number of Customers") +
ggtitle("Distribution of Customer Value")
# Error in data.frame(x = c(45291.1377418786, 52770.7004919648, 15748.975193128,
# : arguments imply differing number of rows: 10000, 3568
') (scale_fill_manual 'kullanımı için kabul edildi. Bununla birlikte, aşağıda ziggystar (+1) önerildiği gibi, df'ye bir sütun eklemeyi ve koşulu doğrudan aes'e (fill =)) aktarmayı atladım. Ayrıca, efsaneyi baskılamak için komploya '' guides '' (fill = FALSE) 'ekledim. – C8H10N4O2