Этот ответ не показывает, как это сделать в конкретном графическом пакете, а показывает, как назначать случайные цвета вашим данным в соответствии с вашими спецификациями.Преимущество этого подхода состоит в том, что он дает вам контроль над тем, какие цвета вы используете, если выберете.
library(dplyr) # assumed okay given ggplot2 mention
df = data_frame(v1=rnorm(100))
n = nrow(df)
df$group = (1:n - (1:n %% -10)) / 10
colors = sample(colors(), max(df$group), replace=FALSE)
df$color = colors[df$group]
df %>% group_by(group) %>% filter(row_number() <= 2) %>% ungroup()
# A tibble: 20 x 3
v1 group color
<dbl> <dbl> <chr>
1 -0.6941434087 1 lightsteelblue2
2 -0.4559695973 1 lightsteelblue2
3 0.7567737300 2 darkgoldenrod2
4 0.9478937275 2 darkgoldenrod2
5 -1.2358486079 3 slategray3
6 -0.7068140340 3 slategray3
7 1.3625895045 4 cornsilk
8 -2.0416315923 4 cornsilk
9 -0.6273386846 5 darkgoldenrod4
10 -0.5884521130 5 darkgoldenrod4
11 0.0645078975 6 antiquewhite1
12 1.3176727205 6 antiquewhite1
13 -1.9082708004 7 khaki
14 0.2898018693 7 khaki
15 0.7276799336 8 greenyellow
16 0.2601492048 8 greenyellow
17 -0.0514811315 9 seagreen1
18 0.8122600269 9 seagreen1
19 0.0004641533 10 darkseagreen4
20 -0.9032770589 10 darkseagreen4
Приведенный выше код сначала создает поддельный набор данных со 100 строками данных и устанавливает n
равным100. df$group
устанавливается путем взятия номеров строк (1:n
), выполняющих довольно запутанную оценку, чтобы получить вектор чисел, подобный c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, ..., 10)
.Затем он выбирает цвета, доступные в базе R, возвращая столько цветов, сколько их групп (max(df$group)
), а затем используя переменную group
, чтобы индексировать вектор color
, чтобы получить цвет.Окончательный результат - это только первые две строки каждой группы, чтобы показать, что цвета в группе одинаковы, но различны в разных группах.Теперь это можно будет передавать как переменную в различных графических средах.