Как добавить единицы измерения и текст в легенду матричного изображения с помощью R - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть матрица, которую я экспортирую в изображение, и я хотел бы добавить единицы измерения и текст к моей легенде.Вот мой код:

library(imager)
setwd("C:/Users/Desktop/R/")
#Export matrix as image in folder
jpeg(filename="result.jpeg", width=dim(image)[1], height=dim(image)[2])
image(result, useRaster=TRUE, axes=FALSE, col=c("grey",'yellow','green',"blue"))
grid(nx=(h), ny=(v), col="black", lty="solid")
legend("topleft", legend=c(A, B, C, D),
       col=c("grey",'yellow','green',"blue"), pch=15, bg='white',cex=1.5)
dev.off()

Вот изображение, которое я получаю: enter image description here

Как добавить более подробную информацию о легенде в виде единицы и текста для каждого числа влегенда?

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете начать использовать ggplot, чтобы иметь больше контроля над изображением графика:

Это требует, чтобы вы изменили формат данных с матрицы на длинный формат.Посмотрите этот пример


require(ggplot2)
require(tidyverse)


xsize <- 60
ysize <- 30

result <- matrix(sample(1:4,xsize*ysize,prob = c(.8,.1,.05,.05),replace = TRUE),
                 nrow = ysize)


result %>%
  as.data.frame() %>%
  mutate(y = row_number()) %>%
  gather(x, value,-y) %>%
  mutate(x = as.numeric(str_extract(x,'[0-9]+'))) %>%
  ggplot(aes(x = x,y=y, fill = factor(value,labels = c("A","B","C","something else")))) +
  labs(fill = "Your legend name here") +
  geom_tile(color = "black")

enter image description here

...