geom_jitter较小的增加点大小

时间:2019-06-08 10:11:20

标签: r ggplot2

我试图每年在Boxplot中绘制一些人作为点,并以点的大小作为年龄。当我不写size = Pnr $ Alterpunkt(这是我根据年龄保存点数的列。对于15岁的人来说,这是0.1;对于16岁的人来说,是0.2,依此类推。) aes看起来很完美,但是那时我没有一个传奇,我想要一个。如果我把它写到aes上,积分会变得更大,而且看起来也不错,因为我有很多积分。

然后看起来像这样:

enter image description here

我已经尝试将形状设置为“。”或笔划= 0。我也尝试过使用guide_legend,但似乎没有任何改变

这是情节的代码:

q <- ggplot(Pnr, aes(group=year, x=year, y=Ges))
q <- q + geom_boxplot(outlier.shape = NA)
q <- q + scale_x_continuous(breaks = c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,
                                       2015,2016,2017,2018,2019,2020))
q <- q + scale_y_continuous(limits = c(-1000,10000))
q <- q + theme(legend.position = c(0.3, 0.3),
               legend.direction = "horizontal", 
               legend.background = element_rect(fill = "white", colour = NA), 
               legend.title=element_blank(), 
               panel.background = element_rect(fill="white", colour="darkgrey", linetype="solid"),
               panel.grid.major = element_line(colour="lightgrey", size=0.1, linetype="solid"),
               panel.grid.minor = element_line(colour="lightgrey", size=0.1, linetype="solid"),
               strip.background = element_rect(fill="lightgrey", colour = "darkgrey"))
q <- q + geom_jitter(aes(size=Pnr$Alterpunkt, shape="."), show.legend = T)

我希望它看起来像这样,但带有图例

enter image description here

我希望有人能帮助我。

1 个答案:

答案 0 :(得分:0)

在没有数据示例的情况下,很难知道如何具体提供帮助。以下是一些建议,希望对您有所帮助:

  • geom_jitter(aes(size=Alterpunkt)...而不是geom_jitter(aes(size=Pnr$Alterpunkt, shape="."),因为在ggplot调用中使用$可能会导致错误,并且该形状调用应该在aes()之外在那里。

  • 使用scale_size_area(max_size =...)scale_size_continuous(range = c(...))定义点的大小。根据您的审美目标,您可以应用变换来调整大小随基础变量的变化而变化的方式。在下面的示例中,我喜欢使用trans = scales::exp_trans(base = 1.1)的外观-这使大的点比中号的点大很多,但没有大得多。调整口味。

这是一个例子: enter image description here

library(gapminder)
library(tidyverse)

fake_df <- gapminder %>%
  mutate(age = (lifeExp - 23.5)*1.7,
         Ges = (gdpPercap/1000)^0.5) %>%
  select(continent, year, age, Ges)

q <- ggplot(fake_df, aes(group=year, x=year, y=Ges))
q <- q + geom_boxplot(outlier.shape = NA)
q <- q + scale_x_continuous(breaks = seq(1950, 2020, 10))
# q <- q + scale_y_continuous(limits = c(-1000,10000))
q <- q + theme(legend.position = c(0.3, 0.6),
               legend.direction = "horizontal", 
               legend.background = element_rect(fill = "white", colour = NA), 
               legend.title=element_blank(), 
               panel.background = element_rect(fill="white", colour="darkgrey", linetype="solid"),
               panel.grid.major = element_line(colour="lightgrey", size=0.1, linetype="solid"),
               panel.grid.minor = element_line(colour="lightgrey", size=0.1, linetype="solid"),
               strip.background = element_rect(fill="lightgrey", colour = "darkgrey"))
q <- q + geom_jitter(aes(size=age), show.legend = T) +
  scale_size_continuous(range = c(0.01, 1.5), 
                        trans = scales::exp_trans(base = 1.2),
                        breaks = c(1, 80, 100))
q