2015-12-03 15 views
5

Trong cố gắng để trả lời this question, một cách để tạo ra những âm mưu mong muốn là sử dụng geom_dotplot từ ggplot2 như sau:thủ tạo ra một huyền thoại khi bạn không thể cung cấp một màu thẩm mỹ

library(ggplot2) 
library(reshape2) 

CTscores <- read.csv(text="initials,total,interest,slides,presentation 
CU,1.6,1.7,1.5,1.6 
DS,1.6,1.7,1.5,1.7 
VA,1.7,1.5,1.5,2.1 
MB,2.3,2.0,2.1,2.9 
HS,1.2,1.3,1.4,1.0 
LS,1.8,1.8,1.5,2.0") 

CTscores.m = melt(CTscores, id.var="initials") 

ggplot(CTscores.m, aes(x=variable, y=value)) + 
    geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03) + 
    theme_bw()+coord_flip() 

enter image description here

Để phân biệt các điểm, sẽ thuận tiện khi chỉ thêm màu sắc, nhưng geom_dotplot cuộn cảm màu và không xếp chồng lên nhau:

ggplot(CTscores.m, aes(x=variable, y=value, fill=initials)) + 
    geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03,color=NA) + 
    theme_bw()+coord_flip() 

enter image description here

Màu sắc có thể được bổ sung bằng tay bằng cách sử dụng hack, mặc dù:

gg_color_hue <- function(n) { 
    hues = seq(15, 375, length=n+1) 
    hcl(h=hues, l=65, c=100)[1:n] 
} 

cols <- rep(gg_color_hue(6),4) 

ggplot(CTscores.m, aes(x=variable, y=value)) + 
    geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03,fill=cols,color=NA) + 
    theme_bw()+coord_flip() 

enter image description here

Thật không may, không có huyền thoại. Trên hết, chúng tôi không thể sử dụng aes(fill=) để cố gắng thêm chú thích theo cách thủ công vì nó sẽ thu gọn các dấu chấm. Có cách nào để thêm chú thích không sử dụng aes() không?

+0

Bạn có thể sử dụng cùng một phương pháp được sử dụng trong các câu trả lời cho [câu hỏi này] (http://stackoverflow.com/q/1364 9473/1412059). – Roland

+0

@ Roland Đã làm điều đó. Cảm ơn. –

Trả lời

1

Với sự trợ giúp của gói gtable bạn có thể trích xuất chú giải từ cốt truyện bằng chú giải không xếp chồng dấu chấm và thêm chú thích đó với grid.arrange từ gói gridExtra vào ô có dấu chấm xếp chồng màu như sau:

p1 <- ggplot(CTscores.m, aes(x=variable, y=value)) + 
    geom_dotplot(binaxis="y", stackdir="up", binwidth=0.03, fill=cols, color=NA) + 
    coord_flip() + 
    theme_bw() 

p2 <- ggplot(CTscores.m, aes(x=variable, y=value, fill=initials)) + 
    geom_dotplot(binaxis="y", stackdir="up", binwidth=0.03, color=NA) + 
    coord_flip() + 
    theme_bw() 

library(gtable) 
fill.legend <- gtable_filter(ggplot_gtable(ggplot_build(p2)), "guide-box") 
legGrob <- grobTree(fill.legend) 

library(gridExtra) 
grid.arrange(p1, legGrob, ncol=2, widths = c(4,1)) 

mang đến cho:

enter image description here

Các vấn đề liên quan