Отрегулируйте размер geom_point таким образом, чтобы отображались большие значения, но они не выглядели больше в ggplot2? - PullRequest
0 голосов
/ 03 января 2019

Проблема, с которой я столкнулся, заключается в том, что я хотел бы, чтобы точки выше определенного порога (= <25) не создавали точек больше, чем установленный масштаб.Эти более крупные точки по-прежнему необходимо отображать, и их нельзя исключать: </p>

d=data.frame(y=c(1,2,6,4,4,6,7,8),
             x=c(8,4,7,5,4,9,2,3),
             coverage=c(0,6,9,88,25,22,17,100),
             col=c(0,.25,.50,.76,.80,1.00,.11,.34)
             )
ggplot() + 
  scale_size(range = c(0, 13),
             breaks = c(0, 5, 10, 20, 25),
             labels = c("0", "5", "10", "20", "25+"),
             guide = "legend"
  ) +
  geom_point(data = d, mapping = aes(x = x, y = y, color = col, size = coverage)) +
  labs(title = "geom_point")

В приведенном выше примере кода у меня есть две точки, которые имеют «охват» больше 25+ и находятся за пределами шкалы.Мне бы хотелось, чтобы эти точки выглядели так же, как порог 25+.

Example Plot output

Ответы [ 2 ]

0 голосов
/ 03 января 2019

A ggplot Единственное решение - установить пределы шкалы и правильно определить поведение вне границ (oob). Для размера можно использовать эту шкалу:

ggplot(d, aes(x, y, color = col, size = coverage)) + 
  geom_point() +
  scale_size_area(
    max_size = 13,
    breaks = c(0,5,10,20,25),
    labels = c("0","5","10","20","25+"),
    guide = "legend",
    limits = c(0, 25),
    oob = scales::squish
  )

enter image description here

0 голосов
/ 03 января 2019

Я думаю, это то, что вы ищете:

d %>%
  mutate(coverage_trunc = pmin(coverage, 25)) %>%
ggplot() + 
  geom_point(mapping=aes(x=x, y=y, color=col, size=coverage_trunc)) +
  labs(title="geom_point") + 
  scale_size(range=c(0,13),
             breaks=c(0,5,10,20,25),
             labels=c("0","5","10","20","25+"),
             name = "Coverage Truncated",
             guide="legend")

Picture of Truncated Coverage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...