创建ggplot2中点的大小和颜色的渐变,超出现有值

时间:2017-10-16 23:02:05

标签: r ggplot2

我正在构建一个图,其中每个点的大小和颜色都基于两个单独列中的线性渐变

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吗?

1 个答案:

答案 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)

plot1

现在让我们为两者定义相同的比例限制:

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)

plot2