强制大小美学按比例缩放至给定的间隔

时间:2019-05-12 09:57:45

标签: r ggplot2

我正在创建多个图,以便为gif创建框架。它应该显示随着时间的增长点。 (请参见图1和2-值增加)。使用尺寸美学是有问题的,因为缩放是针对每个图单独进行的。
我尝试设置scale_size_area()的间隔以提供一系列绝对值,以便缩放“所有值”而不是仅显示每个图中的值。 (没有成功)。

图3 显示了应该如何缩放点,但是应该在每个图中实现这种缩放。

library(tidyverse)
df1 <- data.frame(x = letters[1:5], y = 1:5, size2 = 21:25) 
ggplot(df1, aes(x, y, size = y))   +
  geom_point() +
scale_size_area(breaks = seq(0,25,1))

ggplot(df1, aes(x, y, size = size2))   +
  geom_point() +
  scale_size_area(breaks = seq(0,25,1))

df2 <- data.frame(x = letters[1:5], y = 1:5, size2 = 21:25) %>% gather(key, value, y:size2)

ggplot(df2, aes(x, value, size = value))   +
  geom_point() +
  scale_size_area(breaks = seq(0,25,1))

reprex package(v0.2.1)于2019-05-12创建

2 个答案:

答案 0 :(得分:1)

limits函数中的scale_size_area参数的上限和下限传递给

ggplot(df1, aes(x, y, size = y))   +
  geom_point() +
  labs(
    title = "Y on y-axis",
    size = NULL
  ) +
  scale_size_area(limits = c(0, 25))

ggplot(df1, aes(x, y, size = size2 ))   +
  geom_point() +
  labs(
    title = "size2 on y-axis",
    size = NULL
  ) +
  scale_size_area(limits = c(0, 25))

enter image description here

答案 1 :(得分:0)

怎么样?

library("ggplot2")
df1 <- data.frame(x = letters[1:5],
                  y = 1:5) 
ggplot(data = df1, 
       aes(x = x, 
           y = y, 
           size = y)) +
  geom_point() +
  scale_size_area(breaks = seq(1,25,1),
                  limits = c(1, 25)) 

enter image description here