Y叔的公众号 biobabble 分享过一篇文章 《大开眼界+多图惧点:Pokemon x NBA and other fun with ggimage》主要内容就是用R语言的 ggimage 和 ggrepel 包来可视化NBA球队场均得分与场均失分,非常有意思,作为喜欢篮球的R语言初学者当然是要重复一下啦!可是第一次卡在了如何获取数据上面(原文的数据应该是用stattleshipR这个包获得的,但是自己现在还没有在搞懂这个包的用法)正好这段时间在一片公众号分享的文章中看到了一个同样非常有意思的R包 ballr ,这个包通过简单的函数就可以获取NBA的球队及球员的一些统计数据。比如今天用到的函数 NBAStandingsByDate(),运行这个函数就可以获取NBA球队的战绩、排名、场均得分及场均失分
这个函数输出的结果以列表的形式将东西部球队的数据分别存储在两个数据框中,通过简单的整理将东西部球队的数据整理到一个数据框方便后面的可视化
初步的草图
第二个图因为标签比较长互相之间会有一些重叠,标签的格式是城市+空格+队名,通过正则表达式应该可以把队名单独提取出来,但是自己现在还不会,只能结合Excel,提取球队名字,为数据框添加一列队名,整理过的数据如下
然后对图的一些细节进行简单的修改
原图的框架基本出来了,但是差距还是很明显的,那就是原图每个标签的字体颜色和背景填充色和NBA每支球队的配色是一致的,所以原图看起来非常美观,自己也试着查了NBA球队的配色,但是填充的效果和原图相差甚远,自己还没有找到原因,暂时不在这里展示。从图中我们可以很清楚的看到,马刺队孤零零的一个人在左下角,是所有球队中失分最少的球队,可见,马刺阵中虽然缺少了最佳防守球员莱昂纳德,但是凭借着防守体系和每个人的防守态度,依旧能够建立起稳固的防守,但是在进攻端由于缺少了当家球星莱昂纳德,以阿尔德里奇为单核的马刺队在进攻端确实天赋有限,可见NBA中 防守靠态度,进攻靠天赋 还是有些根据的。往后失分最少的球队依次是凯尔特人、爵士、雷霆,这些都是NBA中的防守强队;在球队得分方面,勇士和火箭遥遥领先,火箭队场均得分虽然稍微落后勇士队,但是失分却是低于勇士队,而且稍稍低于中位线一下,可见跑轰大师德安东尼在防守方面也同样下了不少功夫,有了保罗加盟的火箭队,如果和勇士队在西决相遇,一定会为我们献上最为精彩的进攻大战。
这只是原文中的第一幅,接下来实现第二幅,第二幅是使用 ggimage 包中的 pokemon 代替了上图中的点
(用到的包有 ggimage 和 hrbrthems ,通过 install.packages() 函数就可以安装,然后通过 library() 函数加载)
原文后面还有好几幅非常有意思的图,不过后面的几幅图片自己实现起来还稍微有点困难,等到自己搞懂了原文实现的原理再来和大家分享。
PS:Y叔的公众号 biobabble 和博客有好多非常有意思的R语言学习素材,经常去翻一翻每次都会有不一样的收获!
模仿原文的地址 https://rpubs.com/maraaverick/poke_nba_medians
幸运的我们又遇到了“百年不遇”的月全食,不知道此时此刻的你有没有 举头望着天边的明月,低头思念自己的故乡呢?