访问 scales::transformation 内的其他变量以进行 ggplot 分面
Access other variables within scales::transformation for ggplot faceting
我有一个数据框:
library(tidyverse); library(sf); library(ggplot2)
sfc <- tribble(~analyte, ~value, ~guideline, ~lat, ~long,
"pH", 4, 5, 21, 52,
"pH", 7, 5, 22, 53,
"EC", 50, 100, 21, 52,
"EC", 200, 100, 22, 53) %>%
st_as_sf(coords = c("lat", "long"), crs = 4326)
我在 'analyte' 中有一些分析测试的名称,在 'value' 中有测试结果,在 'guideline' 中有一个指导值,结果应该在下面采样点的纬度和经度。每个分析物只有一个准则。
我想制作一组分面图,其中每个分面都是不同的分析物,值显示为不同大小的点。
ggplot(sfc) +
geom_sf(aes(size = value)) +
facet_wrap(~analyte)
但是,我想要的是每个方面的尺寸比例都不同,这样它就变成了这样:
value size
0 -> 0 px
guideline -> 5 px
max(value)-> (max(value)/guideline)*5) px
每个 facet/analyte 的大小缩放比例不同,但值 0 始终设置为 0px 大小,等于该分析物准则值的值始终设置为 5px。
所以,我想我需要使用 trans_new() 来创建一个新的转换,但我正在努力弄清楚如何让函数知道该方面的分析物名称是什么,以便它可以查找适当的指导值。
任何想法,将不胜感激。
澄清编辑:看图,我希望能够看到两者值的实际大小(例如. pH 值在 10 左右)以及该值大于或小于指导值的量(例如 pH 值 10 是指导值 5 的两倍左右)。所以理想情况下,我希望每个方面都有一个图例,其中每个点的大小显示测量值与指导值相比的相对大小,但实际测量值(而不是指导值的百分比)显示为每个图例上的标签.
也许是这样的?
sfc %>%
group_by(analyte) %>%
mutate(value_scaled = value / max(value)) %>%
ungroup() %>%
ggplot() +
geom_sf(aes(size = value_scaled)) +
scale_size_continuous(range = c(0, 5)) +
facet_wrap(~analyte)
我有一个数据框:
library(tidyverse); library(sf); library(ggplot2)
sfc <- tribble(~analyte, ~value, ~guideline, ~lat, ~long,
"pH", 4, 5, 21, 52,
"pH", 7, 5, 22, 53,
"EC", 50, 100, 21, 52,
"EC", 200, 100, 22, 53) %>%
st_as_sf(coords = c("lat", "long"), crs = 4326)
我在 'analyte' 中有一些分析测试的名称,在 'value' 中有测试结果,在 'guideline' 中有一个指导值,结果应该在下面采样点的纬度和经度。每个分析物只有一个准则。
我想制作一组分面图,其中每个分面都是不同的分析物,值显示为不同大小的点。
ggplot(sfc) +
geom_sf(aes(size = value)) +
facet_wrap(~analyte)
但是,我想要的是每个方面的尺寸比例都不同,这样它就变成了这样:
value size
0 -> 0 px
guideline -> 5 px
max(value)-> (max(value)/guideline)*5) px
每个 facet/analyte 的大小缩放比例不同,但值 0 始终设置为 0px 大小,等于该分析物准则值的值始终设置为 5px。
所以,我想我需要使用 trans_new() 来创建一个新的转换,但我正在努力弄清楚如何让函数知道该方面的分析物名称是什么,以便它可以查找适当的指导值。
任何想法,将不胜感激。
澄清编辑:看图,我希望能够看到两者值的实际大小(例如. pH 值在 10 左右)以及该值大于或小于指导值的量(例如 pH 值 10 是指导值 5 的两倍左右)。所以理想情况下,我希望每个方面都有一个图例,其中每个点的大小显示测量值与指导值相比的相对大小,但实际测量值(而不是指导值的百分比)显示为每个图例上的标签.
也许是这样的?
sfc %>%
group_by(analyte) %>%
mutate(value_scaled = value / max(value)) %>%
ungroup() %>%
ggplot() +
geom_sf(aes(size = value_scaled)) +
scale_size_continuous(range = c(0, 5)) +
facet_wrap(~analyte)