Насколько мне известно и в документации ggplot2, единица измерения size
равна mm
, т. Е. «Размер линии равен ее ширине в мм». Источник: здесь .
И да. Используя функцию after_stat
, представленную в ggplot2 3.3.0
, вы можете указать size
как функцию координат графика.
В качестве примера и для уточнения разницы я сделал четыре сюжета. Сначала нарисуйте результат вашего кода. Второй график отображает сложную функцию x по размеру, которая по существу не влияет на размеры по графику. Графики 3 и 4 используют after_stat
. На графике 3 отображаются интерполированные значения x, вычисленные по размеру geom/stat_bezier2
, а на графике 4 применяется лог-преобразование.
library(ggplot2); library(ggforce); library(patchwork)
beziers <-
data.frame(
x = c(1, 2, 3, 4),
y = c(1, 1, 0, 0),
type = rep('quadratic', 4),
point = c('end', 'control', 'control', 'end')
)
colfunc <- colorRampPalette(c("orange", "blue"))
# Setting size and color as functions of x using after_stat
p1 <- ggplot() +
scale_y_continuous(limits = c(0, 1.5)) +
geom_bezier2(aes(x = x, y = y,
group = type),
size = seq(35, 3, length.out = 100), # respecify as function of plot coordinates?
color = colfunc(100),
alpha = .4,
data = beziers) +
labs(title = "Original plot")
p2 <- ggplot() +
scale_y_continuous(limits = c(0, 1.5)) +
geom_bezier2(aes(x = x, y = y,
group = type,
size = exp(log(x)^2 + 10)),
color = colfunc(100),
alpha = .4,
data = beziers) +
scale_size(range = c(35, 3)) +
guides(size = FALSE) +
labs(title = "exp(log(x)^2 + 10) mapped on size")
p3 <- ggplot() +
scale_y_continuous(limits = c(0, 1.5)) +
geom_bezier2(aes(x = x, y = y,
group = type,
size = after_stat(x)),
color = colfunc(100),
alpha = .4,
data = beziers) +
scale_size(range = c(35, 3)) +
guides(size = FALSE) +
labs(title = "x mapped on size using after stat")
p4 <- ggplot() +
scale_y_continuous(limits = c(0, 1.5)) +
geom_bezier2(aes(x = x, y = y,
group = type,
size = after_stat(log(x))),
color = colfunc(100),
alpha = .4,
data = beziers) +
scale_size(range = c(35, 3)) +
guides(size = FALSE) +
labs(title = "log(x) mapped on size using after stat")
(p1 + p2) / (p3 + p4)
Создано в 2020-03-29 пакетом Представить (v0.3.0)