我想创建一个自定义图,就像一个氯叶绿图图(https://plot.ly/r/choropleth-maps/)。但是,我想创建一个基于骨骼的广义解剖表示的自定义贴图。我拥有的数据代表下图中定义的参与松动的骨骼区域(改编自Wikipedia)
我的示例数据如下:
#example of fake data
df <- data.frame(caseid = 1:100,
zone1 = sample(c(0,1), replace=TRUE, size=100),
zone2 = sample(c(0,1), replace=TRUE, size=100),
zone3 = sample(c(0,1), replace=TRUE, size=100),
zone4 = sample(c(0,1), replace=TRUE, size=100),
zone5 = sample(c(0,1), replace=TRUE, size=100),
zone6 = sample(c(0,1), replace=TRUE, size=100),
zone7 = sample(c(0,1), replace=TRUE, size=100))
我想为这些与种植体相邻的骨头区域绘制一个“图”,并根据该区域中松动的情况来改变每个区域的颜色。请参见下面的示例:
我已经在寻找实现此目的的方法,但似乎找不到一个可以正常使用的现有示例或现有地图(请参见chloropleth Map图示例链接)。
我已经阅读了有关制作空间对象并将其导入以进行绘制的信息,但是我不确定从哪里开始。
问题: 1)制作自定义绘图“地图”涉及哪些步骤?
2)是否可以根据图像制作空间对象(即有一种快速方法吗?)?
答案 0 :(得分:1)
我将您的示例图像用作绘图的背景,并以1到10的比例为每个区域创建了边界。我最后得到一个新的数据框,该框说明了如何存储数据。
软件包
pkg <- c("ggplot2", "ggpubr", "png")
数据
df <- data.frame(
segment = c("segment 1", "segment 2", "segment 3", "segment 4",
"segment 5", "segment 6", "segment 7"),
xmin = c(0, 0, 0, 0, 5.5, 5.5, 5.5),
xmax = c(5.5, 5.5, 5.5, 10, 10, 10, 10),
ymin = c(7.5, 4.2, 1, 0, 1, 4.2, 7.5),
ymax = c(10, 7.5, 4.2, 1, 4.2, 7.5, 10),
instances_loosening = rnorm(7, 100, sd = 40)
)
导入图片
img <- png::readPNG("bone.png")
图解
要创建细分,请使用ggplot中的geom_rect
函数。映射每个x和y的最小值和最大值,并在每个段中按实例填充。
ggplot2::ggplot(df) +
ggpubr::background_image(img) +
ggplot2::geom_rect(
aes(xmin = xmin,
ymin = ymin,
xmax = xmax,
ymax = ymax,
fill = instances_loosening),
color = "black", alpha = 0.5)