2016-07-10 11 views
4

Я хотел бы нанести на карту инциденты OHS через PNG больничного этажа с использованием ggplot2. Я пробовал читать эту негеографическую карту в виде ggimage.Используйте ggplot для построения над изображением с легендой

ICU Floor Plan

До сих пор я попытался следующие с набором данных (14462) наблюдений, что у меня есть.

Пример набора данных

toy <- data.frame(patient_ID = c(1001,1001,1002,1003,1004), 
       SEX = c("M","M","F","F","F"), 
       phenotype = c("Psychiatric","Psychiatric", "Cardio", 
          "Cancer","Psychiatric"), 
          x = c(0.5737, 0.5737, 0.6968, 0.4704, 0.6838), 
          y= c(0.3484, 0.3484, 0.62, 0.5216, 0.2486)) 

Я попытался чтение файла в виде растра, а затем с помощью ggmaps но трудность не легенда.

library(ggmap) 
library(png) 
library(ggplot2) 
library(data.table) 

toy <- fread("toy.csv") 

# read in image 

r <- readPNG("ICU-crop.png") 

#use ggimage to convert to plot and add gender 
ggimage(r, scale_axes = TRUE) + 
    geom_point(aes(x = x, y = y, colour = SEX), data = toy, 
      size = I(1), fill = NA) 

Я бы очень хотел использовать ggplot, но вам нужна легенда. Я не уверен, какие другие методы я могу использовать для ggplot над PNG.

ответ

3

Реальная «магия» для этого просто fullpage=FALSE в вызове ggimage(), но вы должны очистить оси немного потом:

ggimage(r, fullpage = FALSE, scale_axes = TRUE) + 
geom_point(aes(x = x, y = y, colour = SEX), 
      data = toy, size = I(1), fill = NA) + 
    labs(x=NULL, y=NULL) + 
    theme(axis.text=element_blank()) + 
    theme(axis.ticks=element_blank()) 

enter image description here

Вы должны prbly очистить легенда тоже, и я бы предложил немного осветить базовый образ, так как будет трудно увидеть контраст между ним и цветами, которые вы собираетесь накладывать (если только они не являются крупными объектами).

+0

Благодарим вас за решение и дополнительные рекомендации по улучшению визуализации. Скорее всего, это изменит размер и цвет рассеянности, как это рекомендуется. – monkeyshines