2011-11-09 41 views
5

Tôi có thể thiếu một cái gì đó đơn giản ở đây ... Tôi không thể tìm thấy anyway để loại bỏ các dòng mà vượt qua huyền thoại phân biệt màu sắc khác nhau; sau trên từ ví dụ núi lửa địa hình trong ?filled.contour, tôi đã nhận điều này:Xóa các dòng trong chú thích fill.contour

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 

filled.contour(x, y, volcano, color = terrain.colors, 
    plot.title = title(main = "The Topography of Maunga Whau", 
    xlab = "Meters North", ylab = "Meters West"), 
    plot.axes = { axis(1, seq(100, 800, by = 100)) 
       axis(2, seq(100, 600, by = 100)) }, 
    key.title = title(main="Height\n(meters)"), 
    key.axes = axis(2, 
      labels=FALSE, 
      at=FALSE, 
      lty=NULL, 
      tick=FALSE, 
      col="white", 
      col.ticks=NULL) 
) 
mtext(paste("filled.contour(.) from", R.version.string),side = 1, line = 4, adj = 1, cex = .66) 

tôi đã quản lý để loại bỏ tất cả các nhãn và đánh dấu-vết từ trục, nhưng dòng vẫn còn tồn tại (tình cờ, các hiệu lực thi hành tôi đang cố gắng để đạt được là (tôi tin) mặc định trong Matlab)

Trả lời

8

Nếu bạn kiểm tra mã cho filled.contour bạn sẽ thấy dòng này:

rect(0, levels[-length(levels)], 1, levels[-1L], col = col) 

mà rút ra màu sắc hình chữ nhật chìa khóa. Nó được vector hóa, do đó, nó vẽ từng hộp màu riêng lẻ. Hàm rect chấp nhận đối số border, nếu bạn đặt thành NA sẽ bỏ qua đường viền bên trong của hình chữ nhật. Vì vậy, hãy tạo phiên bản chức năng của riêng bạn và thay đổi dòng này thành:

hoặc làm cho nó trở thành một đối số thay vì viết mã cứng. Khi tôi làm điều này, tôi nhận được đồ thị dưới đây:

enter image description here

+0

Xin cảm ơn - Tôi đã không mong đợi điều đó phức tạp đến vậy! – ChrisW

+1

@ChrisW Nó không có vẻ phức tạp với tôi, mặc dù có lẽ tôi chỉ quen với nó. Các tác giả của các hàm như 'filled.contour' không thể dự đoán _every_ khả năng tinh chỉnh mà người dùng sẽ muốn thực hiện. – joran

0

Bạn thậm chí không cần phải thay đổi hardcode filled.contour. Dường như đối số border trong hàm rect dựa trên par("fg"). Chỉ cần đặt par(fg = NA) để xóa những đường màu đen đó.

+0

Thật không may, nếu bạn đặt '' par (fg = NA) '', bạn sẽ quét sạch các đường viền phân định trên chú giải và trục. – epsilone

+1

Vì vậy, đó là trường hợp nhưng bạn luôn có thể đặt thủ công 'border = "black"' và 'col = "black"' để đưa chúng trở lại. –

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