2015-12-21 15 views
6

Làm cách nào để có một phần của chú giải chỉ với một danh mục? Tôi đã cố gắng để gây rối với override.aes mà không thành công. Ngoài ra, đầu ra mong muốn có thể được xem như một chú giải chỉ với hình dạng chứ không phải là tỷ lệ.ggplot2 huyền thoại chỉ với một danh mục/chỉ với hình dạng và không có quy mô

ggplot(iris) + 
    geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=Sepal.Length))+ 
    scale_size_continuous("Legend with \n only 1 circle ",range = c(5,10))+ 
    guides(size = guide_legend(override.aes=list(range= c(1,5)))) 

image1

Một minh họa của các loại product tôi đang cố gắng để có được: map2

điểm được thu nhỏ nhưng huyền thoại không báo cáo quy mô.

+0

Tôi không có một câu trả lời hoàn chỉnh như vậy nhưng điều này có thể giúp bạn để bắt đầu. Tôi vẽ thêm một geom_point() (từ hàng đầu của mống mắt) ggplot (iris) + geom_point (aes (x = Sepal.Width, y = Sepal.Length, color = Loài), size = 2) + scale_size_continuous (" Chú thích với \ n chỉ 1 vòng tròn ", label =" ") + geom_point (dữ liệu = test, aes (x = Sepal.Width, y = Sepal.Length, size = Sepal.Length), color = 'red') + hướng dẫn (size = guide_legend (override.aes ​​= list (size = 3))) – MLavoie

Trả lời

5

Chỉ cần tạo một số break trên thang đo. Bạn cũng có thể thêm nhãn tùy chỉnh cho nhãn đó (đây là ""). Bạn cũng có thể kiểm soát kích thước của điểm trong chú giải bằng dấu ngắt bạn chọn.

Dòng scale_color_discrete() có ở đó vì nếu không chú giải 1 điểm sẽ ở trên cùng, không phải là những gì bạn có trong hình ảnh mong muốn.

require(ggplot2) 
g <- ggplot(iris) + geom_point(aes(x = Sepal.Width, y = Sepal.Length, 
            color = Species, size = Sepal.Length)) + 
    scale_color_discrete(name = "Color") + 
    scale_size_continuous(name = "Legend with \n only 1 circle", 
         breaks = 5, labels = "") 

enter image description here

2

Mặc dù @choff giải pháp là giải pháp tốt nhất cho các ví dụ tôi đưa ra, đây là một chút khác nhau tôi đã kết thúc sử dụng như tôi cần thiết để có thể kiểm soát kích thước phạm vi của vòng tròn.

ggplot(iris) + 
    geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=Sepal.Length))+ 
    scale_size_continuous("Legend with \n only 1 circle ",range = c(5,10), labels=c("","","","",""))+ 
    guides(size =guide_legend(override.aes=list(size=c(4,0,0)))) + 
    theme(legend.key = element_blank()) 
2

Từ biểu đồ bản đồ mục tiêu của bạn, có vẻ như bạn muốn chú giải tách biểu tượng biểu đồ của mình bằng màu sắc và hình dạng. Kích thước chỉ được sử dụng để đặt kích thước của các biểu tượng. Ngoài ra, dữ liệu của bạn có thể sẽ có một cột cho các quốc gia riêng biệt có khoản đầu tư từ những quốc gia không có. Vì vậy, chúng ta có thể thêm một cột vào mống mắt để phân tách các hàng theo hai giá trị, màu sắc bản đồ và hình dạng cho cột đó, và sau đó hiển thị chú thích cho hai tính thẩm mỹ đó trong một chú giải kết hợp duy nhất. Mã này trông giống như:

sp <- ggplot(transform(iris, Flower_size = ifelse(Petal.Width < 1, "Small Flower","Big Flower"))) 
sp <- sp + geom_point(aes(x=Sepal.Width, y=Sepal.Length, fill=Flower_size, shape=Flower_size, size=Sepal.Length), colour=NA) 
sp <- sp + scale_size_continuous(range = c(4,7)) 
sp <- sp + scale_shape_manual(values=c(21, 22)) 
sp <- sp + scale_fill_manual(values=c("grey", "orange")) 
sp <- sp + labs(fill="", shape="") 
sp <- sp + guides(size=FALSE, fill=guide_legend(override.aes=list(size=7))) 
sp <- sp + theme(legend.text=element_text(size=12)) 
plot(sp) 

enter image description here

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