楼主: sssyunsheng
1979 1

[学习分享] ggplot图说明星收入(一) [推广有奖]

  • 2关注
  • 47粉丝

已卖:107份资源

博士生

52%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
4.4708
学术水平
47 点
热心指数
49 点
信用等级
43 点
经验
5127 点
帖子
201
精华
0
在线时间
306 小时
注册时间
2012-2-21
最后登录
2025-9-22

楼主
sssyunsheng 在职认证  发表于 2015-7-4 23:15:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

根据福布斯最近发布的全球明星收入top100的数据,我们要分析几个问题:1)收入和年龄的关系;2)各国总收入和人次比例;3)男女比例;4)各行业summary数据

载入包

  1. library(reshape2)

  2. library(plyr)

  3. library(ggplot2)
复制代码

读入数据

  1. star <- read.csv("H:/<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  2. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  3. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">自媒体/2015-07-04/<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:
  4. Consolas;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;
  5. mso-hansi-font-family:Consolas;mso-bidi-font-family:" times="" new="" roman";="" mso-bidi-theme-font:minor-bidi"="">明星收入分析.csv",
  6. header = T, sep = ",", stringsAsFactor = F)
复制代码

如果不是特别需要读取数据时最好设置stringsAsFactor参数为FALSE,因为一旦默认将字符转化为了因子你可能会碰到各种报错,当你碰到factor字符出现的错误时你就要考虑一下自己是不是将因子当成字符了。

绘制收入和年龄的关系图

  1. theme_opts <- list(theme(panel.grid.major.y
  2. = element_line(colour=rgb(red = 146, green
  3. = 146, blue
  4. = 146, max
  5. = 255), size
  6. =1),

  7.                          panel.grid.major.x = element_line(colour=rgb(red = 146, green = 146, blue = 146, max = 255), size =1),

  8.                          plot.background = element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  9. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  10. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">设置整幅图的背景

  11.                          panel.border = element_blank(),

  12.                          panel.background = element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  13. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  14. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">设置绘图区的颜色

  15.                          axis.text.x
  16. = element_text(colour="grey20",
  17. size=12),

  18.                          axis.text.y = element_text(colour="grey20",
  19. size=12),

  20.                          axis.ticks.x = element_blank(),

  21.                          axis.ticks.y = element_line(size =1),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  22. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  23. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">设置y<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  24. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  25. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">轴坐标轴刻度线的粗细

  26.                          #axis.text.y = element_blank(),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:
  27. Consolas;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;
  28. mso-hansi-font-family:Consolas;mso-bidi-font-family:" times="" new="" roman";="" mso-bidi-theme-font:minor-bidi"="">设置y<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  29. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  30. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">轴标签为空

  31.                          #axis.text.x = element_blank(),

  32.                          axis.title.y = element_blank(),

  33.                          axis.title.x = element_blank()))

  34. cols <- c(rgb(red = 0, green = 130, blue = 137, max = 255),

  35.          
  36. rgb(red = 252, green = 102, blue = 129, max = 255),

  37.          
  38. rgb(red = 120, green = 81, blue = 76, max = 255))

  39. temp <- star[!is.na(star$Age),]

  40. p <- ggplot(star,aes(x =
  41. Age,y = Earnings))

  42. p <- p + geom_point(aes(colour =
  43. sex), size = 8, alpha = 0.8) + scale_colour_manual(values = cols)#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:
  44. Consolas;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;
  45. mso-hansi-font-family:Consolas;mso-bidi-font-family:" times="" new="" roman";="" mso-bidi-theme-font:minor-bidi"="">设置散点的大小颜色

  46. p <- p + coord_cartesian(xlim = c(20, 75))

  47. p <- p + scale_x_continuous(breaks = seq(20, 75,by = 5))

  48. #p <- p+geom_text(aes(label = state_abbrev),alpha
  49. = 0.3, jitter = TRUE)#jitter<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  50. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  51. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">参数设置随机移动一点远距离避免重合

  52. p <- p + geom_hline(yintercept=50, size = 1.5, color = rgb(red = 253, green = 107, blue = 117, max = 255), alpha = 0.8)

  53. #p <- p +
  54. geom_smooth(method="loess",span=1.05,se=FALSE, color = rgb(red = 0,
  55. green = 137, blue = 130, max = 255), size =1)

  56. p <- p + guides(colour=FALSE)

  57. p <- p + theme_opts
复制代码

年龄与薪水.png


从年龄上分析,收入前一百名明星中多集中在20-50岁以下,尤其是女性群体,演艺和竞技圈确实不属于高龄人群统治的领域,毫无疑问这是一个靠脸(体力)吃饭的领域,而我国中医行业恰恰相反,中医必须老龄化才吃得开,真正是一个疗效只看皱纹的行当,当然前提是如果有疗效的话。

绘制性别饼图

  1. temp <- aggregate(Earnings
  2. ~  sex, data
  3. = star, sum)

  4. percent <- function(x, digits = 2, format = "f",
  5. ...) {

  6.   paste0(formatC(100 * x, format =
  7. format, digits = digits, ...), "%")

  8. }

  9. theme_opts <- list(theme(panel.grid=element_blank(),

  10.                          plot.background = element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  11. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  12. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">设置整幅图的背景

  13.                          panel.border = element_blank(),

  14.                          panel.background = element_rect(fill=rgb(red = 242, green = 242, blue = 242, max = 255)),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  15. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  16. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">设置绘图区的颜色

  17.                          axis.text.x = element_text(colour="grey20",
  18. size=12),

  19.                          axis.text.y = element_text(colour="grey20",
  20. size=12),

  21.                          axis.ticks = element_blank(),

  22.                          axis.text.y
  23. = element_blank(),#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:
  24. Consolas;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;
  25. mso-hansi-font-family:Consolas;mso-bidi-font-family:" times="" new="" roman";="" mso-bidi-theme-font:minor-bidi"="">设置y<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  26. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  27. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">轴标签为空

  28.                          #axis.text.x = element_blank(),

  29.                          axis.title.y = element_blank(),

  30.                          axis.title.x = element_blank()))

  31. temp <- aggregate(Earnings
  32. ~  sex, data = star, sum)

  33. cols <- c(rgb(red = 0, green = 130, blue = 137, max = 255),

  34.          
  35. rgb(red = 252, green = 102, blue = 129, max = 255),

  36.          
  37. rgb(red = 120, green = 81, blue = 76, max = 255))

  38. p <- ggplot(temp,
  39. aes(x = "",
  40. y =
  41. Earnings, fill = sex))+

  42. geom_bar(width = 1, stat = "identity")

  43. p <- p + coord_polar("y",
  44. start=0)

  45. p <- p + scale_fill_manual(values = cols)

  46. p <- p + geom_text(aes(y =
  47. Earnings/3 + c(0,cumsum(Earnings)[-length(Earnings)]),


  48.                
  49. label = percent(Earnings/sum(temp$Earnings), digits
  50. = 2)), size=25, color = "white")#<span lang="EN-US" style="font-family:宋体;mso-ascii-font-family:Consolas;mso-fareast-font-family:
  51. 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Consolas;
  52. mso-bidi-font-family:" times="" new="" roman";mso-bidi-theme-font:minor-bidi"="">添加百分比



  53. p <- p + guides(fill=FALSE)

  54. p <- p + theme_opts

  55. p <- p + theme(axis.text.x=element_blank())
复制代码

男女.png

这里需要注意一点ggplot默认情况下(stat = "bin"bar的高指的是观测值个数,所以你要指具体的数值需要设置为identitypie图不是很满意有空再修改。 收入前一百名中,男性收入占总收入的75.29%,尽管近年来女性地位提升很高,也许在精神世界的地位更高,但好像每一个行业实际上仍然是男性主导者一切。


[size=14.6666669845581px]相关数据和代码:http://pan.baidu.com/s/1g6kQa   密码:微信索取
关于我们,关注理性与文艺,用数据创作内容性的精致阅读,这里是数据分析挖掘人员与文艺青年的集结地,不做培训,不做鼓吹,只踏踏实实的做一个又一个数据驱动的文章,并设计机器人减轻数据分析的负担,无论你感兴趣还是想参与都可以关注,请加微信公众号大音如霜
0.jpg

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:gplot plot GPL Library reshape ggplot2 气泡图

职业.png (14.43 KB)

职业.png

国家vs人数.png (25.16 KB)

国家vs人数.png

沙发
sssyunsheng 在职认证  发表于 2015-7-5 13:17:28
markdown在论坛会被转码,有需要原码可以去百度云盘下载

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 05:10