- A+
我们基于美国职业足球大联盟球员的薪水,试用ggplot2做出队员名字对应Club及工资水平的可视化(数据集回复可得)。探索性的展示,我们需要载入plyr和ggplot2包。
1、数据处理
- sj <- read.csv(“E:sj.csv”) #读入数据
- library(plyr)
- library(ggplot2) #载入包
- head(sj) #查看数据前六行
- Club Last.Name First.Name Pos X Base.Salary X.1 Compensation
- 1 NY Abang Anatole F $ 50,000.00 50,000.00
- 2 KC Abdul-Salaam Saad D $ 60,000.00 73,750.00
- 3 CHI Accam David F $ 650,000.00 $ 720,937.50
- 4 DAL Acosta Kellyn M $ 60,000.00 $ 84,000.00
- 5 VAN Adekugbe Samuel D $ 60,000.00 $ 65,000.00
- 6 POR Adi Fanendo F $ 651,500.00 $ 664,000.00
在数据集中列X和列X.1中均只有$符号,我们可以把这两列删除。此外,基本工资是存储为因素,需要转换为数字。首先我们使用gsub()函数除出数据中的逗号。接下来,我们需要将它转换成数字类型。但是,我们在R中不能直接从因素转化成数字。在不丢失信息的前提下把它的方法是先将其转换为字符和数字,,因为R指定了每个数据变量因素的水平,如果你直接转化的话,它就会返回。
- sj$Base.Salary <- gsub(',', '', sj$Base.Salary) #除去工资数字中的逗号’,’
- > sj$Base.Salary
- ![](http://img.shujuren.org/pictures/RH/5749a38e4ab7a.png)
- sj$Base.Salary <- as.numeric(as.character(sj$Base.Salary)) #把因素类型转化成数字类型
- sj$Base.Salary <- sj$Base.Salary / 1000000 #将工资列的单位变成百万美元
2、绘制图形
我们想要得到的是队员名字对应Club及工资水平的可视化。在通常情况下,文本一般显示在条形图的顶部,这可能会导致有些文本无法表示出来或表示混乱。为了避免这种情况,我们需要计算每个成员在该所对应俱乐部所处总累加工资中点的位置。
- salary1<- ddply(, .(Club), transform,pos = cumsum(Base.Salary) - (0.5 * Base.Salary)) #按照Club给原数据添加其中点列的工资信息位置
- ggplot(salary1, aes(x = Club, y = Base.Salary, fill = Base.Salary)) + #设置坐标信息
- geom_bar(stat = 'identity')
- labs(y = 'Base Salary in millions of dollars', x = '') + #添加图标签
- coord_flip() + #旋转X、Y轴
- geom_text(data = subset(salary1, Base.Salary > 2), aes(label = Last.Name, y = pos)) +
- scale_fill_gradient(low = 'springgreen4', high = 'springgreen')
选出工资大于2的成员标记在图表中,并用渐变色填充条形图
图形如下:
来源:数据人网
原文链接:http://shujuren.org/article/148.html
支付宝打赏
微信打赏
赏