覆盖ggplot2中的圆圈

时间:2015-07-08 15:35:53

标签: r ggplot2

我想要做的是覆盖那些黑色轮廓的圈子,但是我不确定如何调整大小,因为我已经有不同的大小。无论如何还要将图例符号更改为$ 1M,$ 2m?

Graph

mikebay_usergraph <- 
  ggplot(mikebay_movies_dt, aes(y = tomatoUserMeter, x = Released, label = Title)) +
  geom_point(aes(size = BoxOffice)) + (aes(color = tomatoImage)) + 
  geom_text(hjust = .45, vjust = -.75, family = "Futura", size = 5, colour = "#535353") +
  ggtitle("The Fall of Bayhem: How Michael Bay movies have declined") +
    theme(plot.title = element_text(size = 15, vjust = 1, family = "Futura"),
          axis.text.x  = element_text(size = 12.5, family = "Futura"),
          axis.text.y  = element_text(size = 12.0, family = "Futura"),
          panel.background = element_rect(fill = '#F0F0F0'),
          panel.grid.major=element_line(colour ="#D0D0D0",size=.75)) +
  scale_colour_manual(values = c('#336333', '#B03530')) +
  geom_hline(yintercept = 0,size = 1.2, colour = "#535353") +
  scale_x_date(limits = c(as.Date("1994-1-1"),as.Date("2017-1-1"))) +  
  theme(axis.ticks = element_blank())

1 个答案:

答案 0 :(得分:1)

我提供了两种可能的解决方案,用于在散点图中围绕大小缩放的点添加圆形或轮廓。对于第一种解决方案,我建议使用允许单独填充和轮廓颜色的绘图符号。这里的缺点是你无法控制轮廓的厚度。对于第二种解决方案,我建议在主要geom_point层下添加一个稍大的黑点的额外层​​。在这种情况下,可以通过将thickness设置为0到1之间的值来手动调整轮廓的粗细。

最后,可以通过加载scales包并将scale_size_continuous(labels=dollar)添加到您的ggplot调用来添加美元图例格式。

library(ggplot2)
library(scales) # Needed for dollar labelling.

dat = data.frame(rating=c(80, 60, 40),
                 date=as.Date(c("1995-1-1", "2005-1-1", "2015-1-1")),
                 boxoffice=c(3e7, 1e8, 7e7),
                 tomato=c("fresh", "rotten", "rotten"))

p1 = ggplot(dat, aes(x=date, y=rating, size=boxoffice, fill=tomato)) +
     geom_point(shape=21, colour="black") +
     scale_fill_manual(values = c(fresh="green", rotten="red")) +
     scale_size_continuous(labels=dollar, range=c(8, 22))

thickness = 0.35

p2 = ggplot(dat, aes(x=date, y=rating)) +
     geom_point(colour="black", 
                aes(size=boxoffice + (thickness * mean(boxoffice)))) +
     geom_point(aes(colour=tomato, size=boxoffice)) +
     scale_colour_manual(values = c(fresh="green", rotten="red")) +
     scale_size_continuous(labels=dollar, range=c(8, 22), name="Box Office")

enter image description here