Добавление ключевой легенды к многогистограмме в R
Как добавить ключевую легенду к приведенному ниже сюжету
Я хочу иметь ключевую легенду где-то в верхнем правом углу с двумя короткими горизонтальными цветными полосами, где красная должна сказать "Пластическая хирургия пошла не так", а синяя - "Германия".
Я использовал следующий код для создания графика:
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)
Любые советы будут с благодарностью.
2 ответа
Команда легенды сделает свое дело:
legend("topright", c("Germany", "Plastic"), col=c("blue", "red"), lwd=10)
Чтобы получить две короткие горизонтальные цветные полосы, просто используйте стандартную линию, но увеличьте толщину линии. Как отметил Роланд, вы также можете использовать fill
аргумент:
legend("topright", c("Germany", "Plastic"), fill=c("blue", "red"))
Увидеть ?legend
Больше подробностей.
Вот альтернативное решение (см. код ниже)
# 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)