Обновление С выпуском версии 0.9.0 теперь можно переопределить эстетические значения в легенде, используя override.aes
в функции guides
.Поэтому, если вы добавите что-то вроде этого к своему графику:
+ guides(colour = guide_legend(override.aes = list(alpha = 1)))
, который должен это сделать.
Я справился с этим, выполнив двойной вызов геому, используяпустое подмножество данных и используя легенду из этого вызова.К сожалению, это не работает, если фрейм данных фактически пуст (например, как вы получили бы из subset(diamonds,FALSE)
), поскольку ggplot2, похоже, обрабатывает этот случай так же, как он обрабатывает NULL
вместо фрейма данных.Но мы можем получить тот же эффект, взяв подмножество только с одной строкой и установив его на NaN
на одном из измерений графика, что предотвратит его построение.
Основано на примере Чейза:
# Alpha parameter washes out legend:
gp <- ggplot() + geom_point(data=diamonds, aes(depth, price, colour=clarity), alpha=0.1)
print(gp)
# Full color legend:
dummyData <- diamonds[1, ]
dummyData$price <- NaN
#dummyData <- subset(diamonds, FALSE) # this would be nicer but it doesn't work!
gp <- ggplot() +
geom_point(data=diamonds, aes(depth, price, colour=clarity), alpha=0.1, legend=FALSE) +
geom_point(data=dummyData, aes(depth, price, colour=clarity), alpha=1.0, na.rm=TRUE)
print(gp)