我想使用 ggplot2 注释所有大于 y 阈值的 y 值。
当你plot(lm(y~x))
使用base包时,自动弹出的第二张图是Residuals vs Fitted,第三张是qqplot,第四张是Scale-location。这些中的每一个都通过将相应的 X 值列为相邻注释来自动标记您的极端 Y 值。我正在寻找这样的东西。
使用 ggplot2 实现这种基本默认行为的最佳方法是什么?
我想使用 ggplot2 注释所有大于 y 阈值的 y 值。
当你plot(lm(y~x))
使用base包时,自动弹出的第二张图是Residuals vs Fitted,第三张是qqplot,第四张是Scale-location。这些中的每一个都通过将相应的 X 值列为相邻注释来自动标记您的极端 Y 值。我正在寻找这样的东西。
使用 ggplot2 实现这种基本默认行为的最佳方法是什么?
更新 scale_size_area()
代替scale_area()
您可能可以从中获取一些东西来满足您的需求。
library(ggplot2)
#Some data
df <- data.frame(x = round(runif(100), 2), y = round(runif(100), 2))
m1 <- lm(y ~ x, data = df)
df.fortified = fortify(m1)
names(df.fortified) # Names for the variables containing residuals and derived qquantities
# Select extreme values
df.fortified$extreme = ifelse(abs(df.fortified$`.stdresid`) > 1.5, 1, 0)
# Based on examples on page 173 in Wickham's ggplot2 book
plot = ggplot(data = df.fortified, aes(x = x, y = .stdresid)) +
geom_point() +
geom_text(data = df.fortified[df.fortified$extreme == 1, ],
aes(label = x, x = x, y = .stdresid), size = 3, hjust = -.3)
plot
plot1 = ggplot(data = df.fortified, aes(x = .fitted, y = .resid)) +
geom_point() + geom_smooth(se = F)
plot2 = ggplot(data = df.fortified, aes(x = .fitted, y = .resid, size = .cooksd)) +
geom_point() + scale_size_area("Cook's distance") + geom_smooth(se = FALSE, show_guide = FALSE)
library(gridExtra)
grid.arrange(plot1, plot2)