转载请注明出处:https://blog.csdn.net/xiezhiliang22
《R数据科学》习题答案链接: https://jrnold.github.io/r4ds-exercise-solutions/data-visualisation.html
1 前言
本节主要讲解《R数据科学》ggplot之中的第二大难点,统计变换stat,同时也理清楚geom几何对象之间联系与区别。废话不多说,下面直接进入正题。
附:这里有一篇文章写写得很深入,分析地很透彻,到这里发现不管学哪一门语言英语是多么的重要啊,因为绝大部分的问题都是可以在R语言社区里面找到解决的,不多说了,文章链接如下:
https://www.sohu.com/a/200798723_466874
2 问题来源
还记得咋们说图像上面反应的东西都是原始数据的一一映射吗?但是上面的代码中只有一个cut映射到了x轴,y轴的count变量原始的数据集之中并没有,那么怎么回事呢?
答案书中写的很明了了,是geom_bar暗地里做了一个统计变换,新生成了一个叫做count的数据
3 stat统计变换和geom几何对象关系
大部分的情况 : stat和geom之间是相互可以转换的
举个例子:
ggplot(mpg,aes(x=class)) + geom_bar() # 使用一个变量做柱状图
ggplot(mpg,aes(x=class)) + stat_count() # 和上面一样
这是没有区别的
但是如果要下面的2个相互转换,那么必须改变默认的参数stat
ggplot(mpg,aes(x=class,y=displ)) + geom_bar(stat=“identity”) # 使用两个变量作柱状图
ggplot(mpg,aes(x=class,y=displ)) + geom_col() # 与上面相同’
为何会这样?geom_bar一般有2个可以选择的stat分别为count和identity,默认为count,而geom_col只有一个默认的identity,所以想要两者相同,那么只有将geom_bar之中的stat进行改变
特殊情况 : 有些参数没有完全进行改变和替换
例子:
ggplot(mpg,aes(x=class,y=displ)) + geom_bar(stat=“identity”)
ggplot(mpg,aes(x=class,y=displ)) + stat_identity(geom=“bar”) # 调换顺序图形不一样了
这2个代码出来的结果却是不一样的,原因为何?在Rstudio查看文档发现还有position参数没有将2者改变成为一样,要想变为一样要使用如下代码:
ggplot(mpg,aes(x=class,y=displ)) + geom_bar(stat=“identity”)
ggplot(mpg,aes(x=class,y=displ)) + stat_identity(geom=“bar”,position=“stack”)
小注 : 有的参数改变不了,变了就会报错,因为geom_col就一个默认参数identity改变不了
ggplot(mpg,aes(x=class)) + geom_col(stat=“count”) # 报错
4 其他疑难点
本节习题之中这个可能会比较难懂一些,如下图:
为何会出现这种情况?如上面所讲的,如下
geom_bar的文档之中有group参数,会count出来一个group ,那么是按照整体算作一组呢?还是一种cut就算作一组呢?当然是整体算作一组咯