2012-02-27 16 views
5

Tôi đang vẽ dotplot() sử dụng lattice hoặc Dotplot() sử dụng Hmisc. Khi tôi sử dụng các thông số mặc định, tôi có thể vẽ thanh lỗi mà không kết thúc dọc nhỏVẽ kết thúc theo chiều dọc của vạch vạch lỗi trong dotplot

--o--

nhưng tôi muốn để có được

| - o-- |

Tôi biết tôi có thể nhận được

| --o-- |

khi tôi sử dụng centipede.plot() từ plotrix hoặc segplot() từ latticeExtra, nhưng những giải pháp không cho tôi như tùy chọn điều tốt đẹp như Dotplot(). Tôi đã cố gắng để chơi với par.settings của plot.line, mà hoạt động tốt cho việc thay đổi lỗi màu đường vạch, chiều rộng, vv, nhưng cho đến nay tôi đã không thành công trong việc thêm các đầu mút dọc:

require(Hmisc) 
mean = c(1:5) 
lo = mean-0.2 
up = mean+0.2 
d = data.frame (name = c("a","b","c","d","e"), mean, lo, up) 
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1, 
     par.settings = list(plot.line=list(col=1), 
         layout.heights=list(bottom.padding=20,top.padding=20))) 

enter image description here

Vui lòng không cung cấp cho tôi các giải pháp sử dụng ggplot2 ...

+0

Một điểm khởi đầu có thể sử dụng 'bwplot' và sửa đổi các bảng điều khiển, ví dụ: 'panel.bwplot'. – Andrie

+0

Các chủ đề sau có thể hữu ích. http://r.789695.n4.nabble.com/dotplots-with-error-bars-td4382474.html http://tolstoy.newcastle.edu.au/R/e2/help/06/10/2791.html –

Trả lời

6

Tôi đã có nhu cầu tương tự này trong quá khứ, với barchart() thay vì bằng Dotplot().

Giải pháp của tôi sau đó là tạo một chức năng bảng tùy chỉnh: (1) đầu tiên thực thi chức năng bảng gốc; và (2) sau đó sử dụng panel.arrows() để thêm thanh lỗi (sử dụng mũi tên hai đầu, trong đó các cạnh của đầu tạo thành một góc 90 độ với trục).

Đây là những gì mà có thể trông giống như với Dotplot():

# Create the customized panel function 
mypanel.Dotplot <- function(x, y, ...) { 
    panel.Dotplot(x,y,...) 
     tips <- attr(x, "other") 
     panel.arrows(x0 = tips[,1], y0 = y, 
        x1 = tips[,2], y1 = y, 
        length = 0.15, unit = "native", 
        angle = 90, code = 3) 
} 

# Use almost the same call as before, replacing the default panel function 
# with your customized function. 
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1, 
     panel = mypanel.Dotplot, 
     par.settings = list(plot.line=list(col=1), 
         layout.heights=list(bottom.padding=20,top.padding=20))) 

enter image description here

+0

Đẹp nhất! Tôi nghĩ rằng các chức năng bảng điều khiển có thể làm phép thuật, nhưng hướng dẫn mạng không đơn giản và có rất nhiều cách tiếp cận mà người ta có thể thực hiện để thay đổi các tham số. Cổ vũ người bạn đời! –

+0

Hmm bây giờ tôi có vấn đề với nó bởi vì nó không hoạt động khi tôi áp dụng hai điều kiện nữa. Xem điều đó bằng cách thêm hai điều kiện khác: 'Dotplot (name ~ Cbind (có nghĩa là, lo, up) | condX * condY, ...)'. Bất kỳ ý tưởng? –

+0

@GeekOnAcid - Tôi không có thời gian ngay bây giờ. Những gì tôi đề nghị là để bạn đặt một dòng đọc 'browser()' bên trong của chức năng bảng tùy chỉnh (dòng đầu tiên sẽ làm). Sau đó, khi/nếu chức năng bảng điều khiển được gọi, nó sẽ làm gián đoạn thực hiện, và bạn có thể poke xung quanh trong đó, để xem nếu, ví dụ, 'lời khuyên <- attr (x," khác ")' vẫn trích xuất dữ liệu chính xác . (Nếu bạn đang sử dụng 'groups =' chứ không phải là điều kiện (thông qua '|'), tôi muốn nói rằng bạn có thể cần phải đối phó với toàn bộ 'bảng điều khiển.superpose() 'morass, nhưng tôi * tin rằng điều đó có lẽ không phải là vấn đề ở đây. –

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