在ggplot2版本2.2.0中,例如:
tmp_df <- data.frame(x = 1:3, y = 1:3, alpha = rep(0.5, 3))
# x y alpha
# 1 1 1 0.5
# 2 2 2 0.5
# 3 3 3 0.5
ggplot(tmp_df, aes(x, y, alpha = alpha)) +
geom_bar(stat = 'identity') +
scale_alpha(breaks = c(0.25, 0.5, 1), labels = c('a', 'b', 'c'))
产生错误:
Error in f(..., self = self) : Breaks and labels are different lengths
手动删除scale_alpha
中的额外alpha值可以解决问题,但肯定可以通过ggplot来处理这个问题吗?
答案 0 :(得分:3)
您必须提供比例限制,因为ggplot
始终相同,而library(ggplot2)
tmp_df <- data.frame(x = 1:3, y = 1:3, alpha = rep(0.5, 3))
tmp_df
#> x y alpha
#> 1 1 1 0.5
#> 2 2 2 0.5
#> 3 3 3 0.5
ggplot(tmp_df, aes(x, y, alpha = alpha)) +
geom_bar(stat = 'identity') +
scale_alpha(breaks = c(0.25, 0.5, 1), labels = c('a', 'b', 'c'), limits = c(0, 1))
不知道比例的'范围'。
alpha
如果break
维度本身具有范围,则不再需要限制,但请注意,在以下示例中,忽略第一个limits
,因为它超出了范围。如果你想要加入tmp_df <- data.frame(x = 1:3, y = 1:3, alpha = seq(.5, 1.5, .5))
tmp_df
#> x y alpha
#> 1 1 1 0.5
#> 2 2 2 1.0
#> 3 3 3 1.5
ggplot(tmp_df, aes(x, y, alpha = alpha)) +
geom_bar(stat = 'identity') +
scale_alpha(breaks = c(0.25, 0.5, 1), labels = c('a', 'b', 'c'))
,那将是必要的。
class Subscriber < ApplicationRecord
belongs_to :article
after_create :send_mail
def send_mail
SubscriptionMailer.welcome_message(self).deliver
end
end