(меня удивляет не легенда, а тот факт, что на самом деле есть значения, нанесенные на графике с альфа 0,1 или 0,3 или чем-то еще.)
Нет. Вы видите, что несколько точек имеют одинаковые дискретные координаты, и поэтому полупрозрачные точки перекрываются.
И чтобы исправить легенду, используйте коэффициенты или строки символов (= дискретные) вместо чисел (= непрерывно).
Не связано, но ваша реализация classify
является довольно неортодоксальным кодом. Прежде всего, поскольку R является функциональным языком, все выражения являются значениями . Это означает, что вместо выполнения присваивания внутри if
вы обычно присваиваете результат if
:
result = if (cls == "suv" || cls == "pickup") 1 else 0
Более того, нет необходимости в переменной result
и вreturn
вызов функции (которая в R выполняет досрочный выход). Вместо этого идиоматическая реализация R будет выглядеть следующим образом:
classify = function(cls) {
if (cls == "suv" || cls == "pickup") 1 else 0
}
Еще лучше, использовать векторизованный ifelse
вместо не векторизованных if
:
classify = function(cls) {
ifelse(cls == "suv" | cls == "pickup", 1, 0)
}
Теперь вы можете использоватьclassify
без sapply
:
mpg = mpg %>% mutate(size = classify(class))