2

data$form包含 170 个唯一的不同值(数字从 1 到 ~800)。我想合并一些值(例如,半径为 10/步)。

我需要这样做才能使用:

colors = rainbow(length(unique(data$form)))

在情节中并提供更好的视觉效果。

预先感谢您的帮助。

4

2 回答 2

3

你也可以使用cut. 如果你使用参数labels=FALSE,你会得到一个整数值:

form <- runif(170, min=1,max=800)
> cut(form, breaks=20)
[1] (518,558]  (280,320]  (240,280]  (121,160]  (757,797]  
[6] (160,200]  (320,359]  (598,638]  (80.8,121] (359,399]  
[7] (121,160]  (200,240] ...
20 Levels: (1.18,41] (41,80.8] (80.8,121] (121,160] (160,200] (200,240] (240,280] (280,320] (320,359] (359,399] (399,439] ... (757,797]

> cut(form, breaks=20, labels=FALSE)
 [1] 14  8  7  4 20  5  9 16  3 10  4  6  5 18 18  6  2 12  
[19] 2  19 13 11 13 11 14 12 17  5 ...

在旁注中,我希望您重新考虑使用彩虹色进行绘图,因为它会扭曲读取数据,参见。彩虹色图(仍然)被认为是有害的。

于 2013-05-14T11:52:20.710 回答
3

您可以使用它们对它们%/%进行分组mean、组合和normalize缩放。

 # if you want specifically 20 groups:
 groups <- sort(form) %/% (800/20) 

 x <- c(by(sort(form), groups, mean))

 x <- normalize(x, TRUE) * 19 + 1

        0         1         2         3         4 
 1.000000  1.971781  2.957476  4.103704  4.948560 
        5         6         7         8         9 
 5.950617  7.175309  7.996914  8.953086  9.952263 
       10        11        12        13        14 
10.800705 11.901235 12.888889 13.772291 14.888889 
       15        16        17        18        19 
15.927984 16.864198 17.918519 18.860082 20.000000 
于 2013-05-14T10:29:48.380 回答