4322 9

[问答] R语言 hist函数 分组 填色 [推广有奖]

  • 0关注
  • 0粉丝

小学生

85%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
0.0005
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
8
精华
0
在线时间
8 小时
注册时间
2017-7-14
最后登录
2017-9-5

楼主
毒菇求败gocrazy 发表于 2017-8-15 22:47:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
新人入门知识求助,想实现图中大于80分的用黄色显示,6080分用蓝色显示,小于60分用绿色显示,
自己试着写了下可是col部分设置还是有问题,求大神帮忙看下怎么改hist(ss$Science,col=ifelse(ss$Science<60,"green",ifelse(ss$Science<80,"blue","yellow")),
ylab="ScienceScore",xlab="Name",main="Science Score")


二维码

扫码加我 拉你入群

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

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

关键词:hist R语言 IST Science SCIE

捕获.JPG (27.06 KB)

捕获.JPG

沙发
毒菇求败gocrazy 发表于 2017-8-15 23:09:10
StuId         StuName         Math Science English
1      1      John Davis        502      95      25
2      2      Angela Williams  465      67      12
3      3      Bull Jones          621      78      22
4      4     Cheryl Cushing  575      66      14
5      5     Reuven Ytzrhak 454      96      13
6      6      Joel Knox         634       89      30
7      7      Mary Rayburn  576      78      38
8      8     Greg England    421      56      20
9      9      Brad Tmac      599      68      22
10    10   Tracy Mcgrady 666     100      26

数据是这样,知道为什么不行了,那用什么方法可以实现呢

藤椅
deem 学生认证  发表于 2017-8-16 00:49:27
  1. ## generate sim data
  2. set.seed(123)
  3. dat_sim <- data.frame(id = 1:1000,
  4.                       score = rnorm(1000, 60, 20))

  5. dat_sim$score <- pmin(dat_sim$score, 100)
  6. dat_sim$score <- pmax(0, dat_sim$score)

  7. ## split and plot

  8. red <- dat_sim$score[dat_sim$score < 60]
  9. blue <- dat_sim$score[dat_sim$score >= 60 & dat_sim$score < 80]
  10. green <- dat_sim$score[dat_sim$score >= 80]

  11. draw_hist <- function(draw_data, col_name) {
  12.     hist(draw_data, col = col_name, xlim = c(20,100), ylim = c(0,200),
  13.          breaks = c(10*2:10),
  14.          xlab = "Name", ylab = "Score", main = "Score")
  15. }


  16. draw_hist(red, "red")
  17. par(new=T)  
  18. draw_hist(blue, "blue")
  19. par(new=T)
  20. draw_hist(green, "green")
复制代码

板凳
deem 学生认证  发表于 2017-8-16 05:21:13
deem 发表于 2017-8-16 00:49
更好的方法是用ggplot2,就不需要画3幅图叠加起来
  1. require(ggplot2)
  2. ## generate sim data

  3. set.seed(123)
  4. dat_sim <- data.frame(id = 1:1000,
  5.                       score = rnorm(1000, 60, 20))

  6. dat_sim$score <- pmin(dat_sim$score, 100)
  7. dat_sim$score <- pmax(0, dat_sim$score)

  8. dat_sim$bin <- cut(dat_sim$score, breaks = c(0,60,80,100) )

  9. ## plot using mapping
  10. p <- ggplot(dat_sim) + geom_histogram(aes(score, fill = bin),
  11.                                       center = 62.5, binwidth = 5)

  12. p + scale_fill_manual(values = c("green", "blue", "yellow"))
复制代码

报纸
毒菇求败gocrazy 发表于 2017-8-16 09:53:55
deem 发表于 2017-8-16 05:21
更好的方法是用ggplot2,就不需要画3幅图叠加起来
非常感谢回答,代码好像被乱码了,复制下来是这样跟看到的有点不同而且运行不了,
dat_simscore<−pmin(datsimscore <- pmin(dat_simscore, 100)
dat_simscore<−pmax(0,datsimscore <- pmax(0, dat_simscore)
dat_simbin<−cut(datsimbin <- cut(dat_simscore, breaks = c(0,60,80,100) )
这部分不太明白

地板
deem 学生认证  发表于 2017-8-16 10:25:16
毒菇求败gocrazy 发表于 2017-8-16 09:53
非常感谢回答,代码好像被乱码了,复制下来是这样跟看到的有点不同而且运行不了,
dat_simscore
dat_simscore<−pmin(dat_simscore, 100)
dat_simscore<−pmax(0, dat_simscore)
dat_simbin<−cut(datsimbin <- cut(dat_simscore, breaks = c(0,60,80,100))

函数不明白的看帮助吧

7
毒菇求败gocrazy 发表于 2017-8-16 11:09:06
deem 发表于 2017-8-16 10:25
dat_simscore
第一个pmin是返回小于100的元素,pmax是返回大于0的元素的意思吧,但是dat_simscore还没声明怎么能用它去声明它自己的呢,我这运行不了
dat_simscore<−pmin(dat_simscore, 100)
dat_simscore<−pmax(0, dat_simscore)
提示这样的错误
> dat_simscore <-pmin(dat_simscore, 100)
Error in pmin(dat_simscore, 100) : object 'dat_simscore' not found

8
deem 学生认证  发表于 2017-8-16 11:32:21
毒菇求败gocrazy 发表于 2017-8-16 11:09
第一个pmin是返回小于100的元素,pmax是返回大于0的元素的意思吧,但是dat_simscore还没声明怎么能用它去 ...
晕,要点“复制代码”,用鼠标选会出错的

## generate sim data
set.seed(123)
dat_sim <- data.frame(id = 1:1000,
                      score = rnorm(1000, 60, 20))

dat_sim$score <- pmin(dat_sim$score, 100)
dat_sim$score <- pmax(0, dat_sim$score)

## split and plot

red <- dat_sim$score[dat_sim$score < 60]
blue <- dat_sim$score[dat_sim$score >= 60 & dat_sim$score < 80]
green <- dat_sim$score[dat_sim$score >= 80]

draw_hist <- function(draw_data, col_name) {
    hist(draw_data, col = col_name, xlim = c(20,100), ylim = c(0,200),
         breaks = c(10*2:10),
         xlab = "Name", ylab = "Score", main = "Score")
}


draw_hist(red, "red")
par(new=T)  
draw_hist(blue, "blue")
par(new=T)
draw_hist(green, "green")

9
毒菇求败gocrazy 发表于 2017-8-16 19:48:16
deem 发表于 2017-8-16 11:32
晕,要点“复制代码”,用鼠标选会出错的

## generate sim data
我发誓我是点复制代码复制出来的,然后就变成那样奇奇怪怪的

10
毒菇求败gocrazy 发表于 2017-8-16 20:14:46
deem 发表于 2017-8-16 11:32
晕,要点“复制代码”,用鼠标选会出错的

## generate sim data
搞懂了,非常非常感谢耐心的回答

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 03:12