2011-11-29 31 views
7

Có thể chú thích số liệu lattice (hoặc ggplot2) với các thành phần được tạo bằng polygon() (hoặc các phần tử được tạo bằng hàm tương tự) từ thư viện graphics không?Có thể sử dụng đa giác() hoặc tương đương trong các ô mạng và ggplot2 không?

Tôi không quá quen thuộc với một trong hai thư viện ngoài ví dụ về các biểu đồ đơn giản được đăng trên web và được in trong sách của Deepayan Sarkar. Vì vậy, trong khi tôi có mã cho những gì tôi đã làm trong R với thư viện graphics, chỉ cho tôi các hàm tương ứng, tương đương và ví dụ sử dụng cho lattice hoặc ggplot2 đặc biệt sẽ được đánh giá cao. Cảm ơn.

+1

'? Panel.polygon' và'? Geom_polygon' tương ứng (phải thừa nhận là không có ví dụ trong lattice doc, nhưng ý tưởng cũng giống như với đa giác đồ họa cơ sở) – baptiste

+0

Câu hỏi hay. Tôi đã nhận thấy trong những năm qua rằng các phương pháp mạng không nổi tiếng. Cũng làm việc mạnh mẽ về gắn thẻ. –

+0

http://stackoverflow.com/q/3610291/269476 có thể được quan tâm – James

Trả lời

8

Có một loạt các phương pháp cho phép thêm các đối tượng đồ họa vào các ô mạng. Trong gói latticeExtra có layer và các phương thức "+". Trong pkg: chính mạng tinh thể, một mạng có thể thêm vào các ô hiện có với trellis.focus(...) theo sau là các cuộc gọi bảng điều khiển như panel.polygon(). Tôi đã sử dụng chúng trong quá khứ để chú thích contourplot() s.

Nếu bạn làm ví dụ về sự giúp đỡ (contourplot) và sau đó làm theo điều đó bằng cách:

trellis.focus("panel", 1, 1) 
do.call("panel.polygon", list(x =c(5,15,15,5,5), y=c(60,60,90,90,60))) 
trellis.unfocus() 

... bạn sẽ thấy một hình chữ nhật với đỉnh c (5,60), c (15,60) , c (15,90), c (5,90) đã được đặt trong bảng # 1 của cốt truyện. Chú ý số thứ tự thte được bsed ở phía dưới bên trái là (1,1). Tôi thường không sử dụng hướng đối tượng để trả về một vlaue từ đó do.call(), nhưng tôi nghi ngờ nó sẽ thành công.

enter image description here

11

Dưới đây là phiên bản ggplot2 của ví dụ đầu tiên trong ?polygon()

x <- c(1:9,8:1) 
y <- c(1,2*(5:3),2,-1,17,9,8,2:9) 

ggplot(NULL, aes(1:10, 1:10)) + geom_point() + 
    geom_polygon(aes(x, y), fill = "orange", colour = "skyblue", alpha = 0.5) 

enter image description here

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