2013-03-04 18 views
5

Tôi đang lúng túng với màu sắc trong ggplot. Tôi đang cố gắng áp dụng một gradient màu dựa trên cột xếp hạng bên dưới. Tôi khá chắc chắn đây là một sự khác biệt giữa màu sắc và điền hoặc biến rời rạc và liên tục. Tôi muốn màu sắc như được hiển thị trên thang điểm trong "c" và "d" bên dưới, nhưng những nỗ lực gần nhất của tôi là "e" và "f" trong đó các điểm được tô màu nhưng không được tô màu theo độ dốc. Độ dốc tôi thích áp dụng cho các giá trị của xếp hạng 1: 100, với tất cả các giá trị của các điểm đen khác.Cố gắng áp dụng gradient màu trên biểu đồ trong ggplot

Mọi hỗ trợ sẽ được đánh giá cao nhất.

library(reshape2) 
library(ggplot2) 

co2 <- read.table(
    header=TRUE, text=' 
rank tons 
1  2 1.00 
2  4 1.00 
3  7 0.00 
4 44 0.00 
5 104 0.00 
6 48 0.05 
7 32 0.50 
8  5 0.00 
9 78 1.00 
10 12 0.00 
11 15 0.00 
12 176 1.00 
13 440 0.02 
14 249 0.00 
15 481 0.00 
16 388 0.00 
17 458 0.05 
18 488 0.00 
19 264 0.00 
20 203 0.00 
      ')  

tôi đã cố gắng:

#does not add rank as a color 
c<- ggplot(data=co2, aes(x = tons, color=rank)) 
c + geom_dotplot(stackgroups = TRUE, binwidth = .05, binpositions = "all") + 
    scale_colour_gradient(limits=c(1, 500)) 

#also does not add rank as color 
d<- ggplot(data=co2, aes(x = tons, color=rank)) 
d + geom_dotplot(stackgroups = TRUE, binwidth = 0.05, method = "histodot") + 
    scale_colour_gradient(limits=c(1, 100)) 

#create breaks for fill-- works correctly but no gradient 
co2$brks<- cut(co2$rank, c(seq(0, 100, 20), max(co2$rank))) 
e<- ggplot(data=co2, aes(x = tons, fill=brks)) 
e + geom_dotplot(stackgroups = TRUE, binwidth = 0.05, method = "histodot") 

#also works correctly but no gradient 
f<- ggplot(data=co2, aes(x = tons, fill=brks)) + geom_histogram() 
f 

Tôi đã kiểm tra những đã nhưng tôi vẫn đang thiếu một cái gì đó:

Trả lời

4

Đây là một chút của một câu trả lời hacky, nhưng nó hoạt động:

##Define breaks 
co2$brks<- cut(co2$rank, c(seq(0, 100, 5), max(co2$rank))) 
#Create a plot object: 
g = ggplot(data=co2, aes(x = tons, fill=brks)) + 
    geom_dotplot(stackgroups = TRUE, binwidth = 0.05, method = "histodot") 

Bây giờ chúng ta tự xác định màu sắc để sử dụng như một bảng màu:

g + scale_fill_manual(values=colorRampPalette(c("white", "red"))(length(co2$brks))) 

enter image description here

1

Tôi chỉ cần thêm

+ scale_fill_brewer(palette="RdYlBu") 

Xem dưới đây:

library(reshape2) 
library(ggplot2) 

co2 <- read.table(
    header=TRUE, text=' 
rank tons 
1  2 1.00 
2  4 1.00 
3  7 0.00 
4 44 0.00 
5 104 0.00 
6 48 0.05 
7 32 0.50 
8  5 0.00 
9 78 1.00 
10 12 0.00 
11 15 0.00 
12 176 1.00 
13 440 0.02 
14 249 0.00 
15 481 0.00 
16 388 0.00 
17 458 0.05 
18 488 0.00 
19 264 0.00 
20 203 0.00 
      ')                           

#create breaks for fill-- 
co2$brks<- cut(co2$rank, c(seq(0, 100, 20), max(co2$rank))) 
e<- ggplot(data=co2, aes(x = tons, fill=brks)) 
e + geom_dotplot(stackgroups = TRUE, binwidth = 0.05, method = "histodot") + scale_fill_brewer(palette="RdYlBu") 

#also works correctly! 
ggplot(data=co2, aes(x = tons, fill=brks)) + geom_histogram() + scale_fill_brewer(palette="RdYlBu")