Я вижу два варианта здесь. Тот, который требует небольшой настройки. Тот, который имеет больше кода, но не требует настройки.
Вариант 1 - Определить количество уникальных факторов по вашей конкретной переменной
Просто используйте функции length
и unique
, чтобы определить количество факторов в cyl
.
values = myColRamp(length(unique(mtcars$cyl))
Вариант 2 - Постройте график и посмотрите, сколько цветов он использовал
Если вы не хотите указывать имя переменной и хотите что-то более общее, мы можем построить график и посмотреть, сколько цветов использовал ggplot, а затем построить его снова.
Для этого мы также должны сохранить наш график как объект, назовем этот объект графика p
.
p <- ggplot(mtcars, aes(x = wt, y = mpg, col = as.factor(cyl))) +
geom_point(size = 3)
#Notice I haven't set the colour option this time
p_built <- ggplot_build(p) #This builds the plot and saves the data based on
#the plot, so x data is called 'x', y is called 'y',
#and importantly in this case, colour is called the
#generic 'colour'.
#Now we can fish out that data and check how many colour levels were used
num_colours <- length(unique(p_built$data[[1]]$colour))
#Now we know how many colours were used, we can add the colour scale to our plot
p <- p + scale_colour_manual(values = myColRamp(num_colours))
Теперь либо просто позвоните p
или print(p)
, в зависимости от того, как вы его используете.