使用 ggplot 绘制带有图例的图像
Use ggplot to plot over an image with legend
我想使用 ggplot2 在医院平面图的 PNG 图像上绘制 OHS 事件。我试过以 ggimage 的形式阅读这张非地理地图。
到目前为止,我已尝试对我拥有的数据集 (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 但需要图例。我不确定我可以使用哪些其他方法在 PNG 上绘制 ggplot。
真正的 "magic" 只是调用 ggimage()
中的 fullpage=FALSE
,但是你必须清理一下坐标轴:
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())
您也应该清理图例,我建议稍微调亮基本图像,因为很难看到它与您要叠加的颜色之间的对比(除非它们是大对象)。
我想使用 ggplot2 在医院平面图的 PNG 图像上绘制 OHS 事件。我试过以 ggimage 的形式阅读这张非地理地图。
到目前为止,我已尝试对我拥有的数据集 (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 但需要图例。我不确定我可以使用哪些其他方法在 PNG 上绘制 ggplot。
真正的 "magic" 只是调用 ggimage()
中的 fullpage=FALSE
,但是你必须清理一下坐标轴:
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())
您也应该清理图例,我建议稍微调亮基本图像,因为很难看到它与您要叠加的颜色之间的对比(除非它们是大对象)。