2013-02-04 29 views
6

Làm thế nào để thêm một huyền thoại chìa khóa để cốt truyện dưới đâyThêm huyền thoại chìa khóa để âm mưu đa histogram trong R

enter image description here

tôi whish để có một truyền thuyết then chốt ở đâu đó ở góc trên bên phải với hai ngắn ngang thanh màu sắc, nơi màu đỏ nên nói "Phẫu thuật thẩm mỹ đã đi sai" và màu xanh lam nên nói "Đức".

tôi đã sử dụng đoạn mã sau để tạo ra cốt truyện:

bar2 <- read.table("div/ana-mut[...]/barriers-set-2.dat", sep=" ") 
bar2val <- c(bar2$V1, bar2$V2) 
bar3 <- read.table("div/ana-mut[...]/barriers-set-3.dat", sep=" ") 
bar3val <- c(bar3$V1, bar3$V2) 
p1 <- hist(subset(bar2val, bar2val < 30), breaks=30) 
p2 <- hist(subset(bar3val, bar3val < 30), breaks=30) 
plot(p1, col=rgb(1,0,0,8/9), main="Barrier distribution", xlab="Barrier [kcal/mol]", ylab="Mutant count") 
plot(p2, col=rgb(0,0,1,8/9), add=T) 

Bất kỳ gợi ý sẽ được đánh giá rất nhiều.

+1

Một vài điểm. Trước tiên, hãy đặt câu hỏi của bạn [reproducible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Ngoài ra, hãy cho chúng tôi thấy những gì bạn đã thử. – csgillespie

Trả lời

15

Lệnh truyền thuyết sẽ làm các trick:

legend("topright", c("Germany", "Plastic"), col=c("blue", "red"), lwd=10) 

Để có được hai thanh màu ngang ngắn chỉ cần sử dụng một dòng tiêu chuẩn, nhưng tăng độ dày dòng. Như Roland chỉ ra, bạn cũng có thể sử dụng đối số fill:

legend("topright", c("Germany", "Plastic"), fill=c("blue", "red")) 

Xem ?legend để biết thêm chi tiết.

enter image description here

+1

Đối với một biểu đồ, tôi sẽ sử dụng tham số 'fill' để vẽ các hộp thay vì có các dòng trong chú giải. – Roland

+0

@Roland Điểm tốt, cảm ơn. – csgillespie

+0

Cảm ơn csgillespie. Điều này là đủ cho nhu cầu của tôi. – TMOTTM

2

đây là một giải pháp thay thế (xin xem dưới đây cho mã)

enter image description here

# some semi-random data … 
df <- structure(list(Germany = c(1L, 3L, 6L, 1L, 2L), Plastic = c(2L, 
5L, 4L, 2L, 3L)), .Names = c("Germany", "Plastic"), class = "data.frame", row.names = c(NA, 
-5L)) 

# Expand right side of clipping rect to make room for the legend 
par(xpd=T, mar=par()$mar+c(0,0,0,4)) 

# Graph data (transposing the matrix) using heat colors, 
# put 10% of the space between each bar, and make labels 
# smaller with horizontal y-axis labels 
barplot(t(df), main="Barrier distribution", xlab="Barrier [kcal/mol]", ylab="Mutant count", 
    col=c("blue", "red"), space=0.1, cex.axis=0.8, las=1, 
    names.arg=c("Mon","Tue","Wed","Thu","Fri"), cex=0.8) 

# Place the legend at (4,9) using blue and red 
legend(4, 9, names(df), lwd=4, col=c("blue", "red")) 

# Restore default clipping rect 
par(mar=c(5, 4, 4, 2) + 0.1) 
+0

@TMOTTM, Câu trả lời này có hữu ích theo bất kỳ cách nào không? –

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