我正在构建一个图,其中每个点的大小和颜色都基于两个单独列中的线性渐变
df1 <- data.frame (x = c(1:10), y = c(1:10), pointSize = 1:10, pointCol = 1:10)
ggplot(df1, aes(x = x, y = y, colour = pointCol, size = pointSize)) + geom_point() +
scale_colour_gradient(low = "steelblue", high = "yellow")
表中编码颜色和磅值的列的最大值是10.我可以更改渐变大小,使其从say = 10变为20吗?
答案 0 :(得分:2)
您可以为两个图定义相同的大小比例限制。这是一个例子:
示例数据集:
df1 <- data.frame (x = 1:10, y = 1:10, pointSize = 1:10, pointCol = 1:10)
df2 <- data.frame (x = 1:10, y = 10:1, pointSize = 11:20, pointCol = 1:10)
没有标准化尺度的情节(我们可以看到地块1中的尺寸10与地块2中的尺寸20匹配):
p1 <- ggplot(df1, aes(x = x, y = y, colour = pointCol, size = pointSize)) +
geom_point() +
scale_colour_gradient(low = "steelblue", high = "yellow") +
theme_bw()
p2 <- ggplot(df2, aes(x = x, y = y, colour = pointCol, size = pointSize)) +
geom_point() +
scale_colour_gradient(low = "steelblue", high = "yellow") +
theme_bw()
gridExtra::grid.arrange(p1, p2, nrow = 1)
现在让我们为两者定义相同的比例限制:
size.limits <- range(df1$pointSize, df2$pointSize)
> size.limits
[1] 1 20
为每个图添加尺寸比例(我们现在可以看到两个图共享相同尺寸的图例,图1中的最大点与图2中的最小点尺寸相同):
gridExtra::grid.arrange(p1 + scale_size(limits = size.limits),
p2 + scale_size(limits = size.limits),
nrow = 1)