我试图每年在Boxplot中绘制一些人作为点,并以点的大小作为年龄。当我不写size = Pnr $ Alterpunkt(这是我根据年龄保存点数的列。对于15岁的人来说,这是0.1;对于16岁的人来说,是0.2,依此类推。) aes看起来很完美,但是那时我没有一个传奇,我想要一个。如果我把它写到aes上,积分会变得更大,而且看起来也不错,因为我有很多积分。
然后看起来像这样:
我已经尝试将形状设置为“。”或笔划= 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)
我希望它看起来像这样,但带有图例
我希望有人能帮助我。
答案 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)
的外观-这使大的点比中号的点大很多,但没有大得多。调整口味。
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