我最近才开始学习R.现在我要做的就是为同一个情节整合两个传说。换句话说,我希望默认大小图例根据它的大小来改变颜色。
我一直在谷歌上搜索一些显然似乎都不起作用的解决方案,但同样,我是R的新手,所以也许我只是做错了。
我的代码:
ggplot(Caschool, aes(x=testscr, y=avginc), colour="green") +
geom_point(aes(size=enrltot, color=enrltot)) +
geom_smooth(colour="blue") +
labs(x="Test Score", y="Average Income", title="California Test Score Data", color="Number of Students\nPer District") +
theme(
panel.grid.minor = element_blank(),
panel.grid.major=element_line(colour="grey", size=0.4),
panel.background=element_rect(fill="beige"),
axis.line=element_line(size = 1.2, colour = "black"),
plot.title = element_text(size = rel(2))) +
scale_color_continuous(limits=c(0, 30000), breaks=seq(0,30000, by=2500)) +
guides(color= guide_legend(), size=guide_legend())
显然,我不允许发布图片,或者我会展示到目前为止的样子。
答案 0 :(得分:8)
ggplot2
确实可以将大小和颜色图例组合成一个,但是,只有它们兼容时才有效:它们需要具有完全相同的中断,否则它们无法组合。
让我举个例子:假设您想要在大小和颜色上映射0到10之间的值。您告诉ggplo2
将小点用于低于5的值,将大点用于较大值。然后它将按预期绘制一个小点和大点的图例。现在,您还想添加颜色,并且您需要3以下的点为绿色,上方的点为蓝色。 ggplot2
也将为此绘制一个图例,但不可能将这两个传说结合起来。小点必须是绿色和蓝色。这个问题可以通过对颜色和大小使用相同的中断来解决。
在您的示例中,您手动更改色阶的中断,但不是大小比例的中断。这导致了不兼容的不兼容的图例。
我无法使用您的约会证明这一点,因为我没有它。所以我将使用mtcars
创建一个示例。具有不兼容图例的变体构造如下:
p <- ggplot(mtcars, aes(x=mpg, y=drat)) +
geom_point(aes(size=gear, color=gear)) +
scale_color_continuous(limits=c(2, 5), breaks=seq(2, 5, by=0.5)) +
guides(color= guide_legend(), size=guide_legend())
给出了以下情节:
如果我现在为大小添加相同的中断,
p + scale_size_continuous(limits=c(2, 5), breaks=seq(2, 5, by=0.5))
我得到的情节只有一个传奇:
对于您的代码,这意味着您应该在绘图中添加以下内容:
+ scale_size_continuous(limits=c(0, 30000), breaks=seq(0,30000, by=2500))
一点点评论:在colour = "green"
的通话中使用ggplot
打算做什么?我没有看到它有任何影响,因为你在以后使用的两个geom中再次设置颜色。也许是一个较旧的情节变体的遗物?