У меня возникают трудности с сюжетом легенды:R функция базового участка: неправильная легенда для графа
head(bee.ground)
X Month Treatment Block Bee_Richness Bee_Abundance Bare Grass Forb Dead Moss
1 1 May DS 1 0 0 23.20 15.72 37.80 17.00 0
2 2 May GS 1 0 0 33.52 21.88 33.60 9.88 0
3 3 May UB 1 1 1 0.60 18.28 35.00 43.48 0
4 4 May DS 2 7 71 11.20 11.20 58.80 16.68 0
5 5 May GS 2 5 6 37.00 12.08 43.92 5.12 0
6 6 May UB 2 5 16 4.40 14.88 12.32 67.88 0
shape<-as.numeric(as.factor(bee.ground$Block))
color<-as.numeric(as.factor(bee.ground$Treatment))
plot(bee.ground$Bare, bee.ground$Bee_Richness, main = "Bee Richness and Bare Ground Cover",
xlab = "Percent Bare Ground", ylab = "Bee Richness",
pch = shape,
col = color,
las = 1,
cex = 1.5)
Это хороший график, я получаю, что я думаю, что черный DS, красный - GS, а зеленый - UB для лечения. Блоки (четыре разные формы) кажутся правильными. Однако, когда я делаю легенду с этими же параметрами, я получаю это: legend's in the top corner...
legend("topleft",
pch = shape,
col = color,
legend = c("Block 1","Block 2","Block 3","Block 4", NA, "DS","GS","UB"))
Все это делает, повторяя форму трижды с разными цветами, а соответствие с тем, что (я думаю) график показывает. Я попробовал функцию слияния, но это не исправило проблему (она создает ту же неправильную легенду).
~ Есть ли способ в функции построения графика, чтобы легенда находилась под графиком и центрирована? EDIT: Я понял это! просто скорректировал ylim, чтобы перейти на -3 и оставить пространство для горизонтальной легенды.
~ Возможно, другое; как я конкретно назначаю каждому лечению определенный цвет, а каждый блок - конкретную фигуру, вместо того, чтобы позволить R использовать только первые несколько параметров?
Благодарим за помощь!
EDIT: Я закончил создание двух отдельных легенд, чтобы различать между блоками и обработками.
shape <- ifelse(bee.ground$Block == "1", 1,ifelse(bee.ground$Block == "2", 2, ifelse(bee.ground$Block == "3",3,4)))
color <- ifelse(bee.ground$Treatment == "DS", 'red',ifelse(bee.ground$Treatment == "GS", 'green', 'black'))
plot(bee.ground$Bare, bee.ground$Bee_Richness, main = "Bee Richness and Bare Ground Cover",
xlab = "Percent Bare Ground", ylab = "Bee Richness",pch = c(shape),
col = c(color),las = 1,cex = 1.5,ylim = c(0,35))
legend("topleft", c('1','2','3','4'),pch = c(1,2,3,4),horiz = TRUE,title = "Block")
legend("topright",c("DS","GS","UB"),horiz = TRUE, text.col = c("red","green","black"),title = "Treatment",title.col = "black")
Спасибо! Я внес некоторые изменения в мой оригинальный пост :) – Brenna