我正在创建一个散点图(大约1,500,000点),我根据因子变量运行回归(见下面的“halfs”)。这是图片:
正如您所看到的,很难看到“红色”回归线。
这是数据:
For_Cov Per_chg halfs
1 0.8372001 0.002400000 upper half
2 0.7236001 0.002800111 upper half
3 0.6036000 0.000800000 upper half
4 0.8540000 0.000000000 upper half
5 0.9080001 0.003200000 upper half
6 0.8248000 0.000000000 upper half
7 0.1132000 0.000000000 upper half
8 0.2044000 0.007600000 upper half
9 0.2476001 0.085200000 upper half
10 0.2368000 0.003600000 upper half
这是代码:
ggplot(grid_gdp_full, aes(x = For_Cov, y = Def_Chg, group = factor(halfs))) +
geom_point(aes(colour = halfs), alpha = 0.1) +
stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 4, fullrange=TRUE, aes(group = halfs, colour = halfs), alpha = 1) +
xlab("Initial") +
ylab("Percent") +
ylim(0,0.10) +
scale_x_reverse() +
theme_bw() +theme(
axis.text=element_text(size=12)
,axis.title=element_text(size=14,face="bold")
,plot.background = element_blank()
,panel.grid.major = element_blank()
,panel.grid.minor = element_blank()
,panel.border = element_blank()
,panel.background = element_blank()
) +
theme(axis.line = element_line(color = 'black'))
有没有人如何更改代码以使回归线具有不同的颜色(回归线由stat_smooth创建) - 对于两个因子级别可能是灰色和蓝色而不更改点的初始颜色?
以下是我目前正在使用的代码,我仍然无法获得两条不同的彩色线条:
ggplot(grid_gdp_full, aes(x = For_Cov, y = Def_Chg, fill = factor(halfs))) +
geom_point(aes(colour = halfs), alpha = 0.1, colour="transparent",shape=21) +
stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 2, fullrange=TRUE, aes(group = factor(halfs)), alpha = 1) +
xlab("Initial") +
ylab("Percent") +
ylim(0,0.1) +
scale_x_reverse() +
theme_bw() +theme(
axis.text=element_text(size=12)
,axis.title=element_text(size=14,face="bold")
,plot.background = element_blank()
,panel.grid.major = element_blank()
,panel.grid.minor = element_blank()
,panel.border = element_blank()
,panel.background = element_blank()
) +
theme(axis.line = element_line(color = 'black')) +
scale_colour_manual(values = c("red","blue")) +
scale_fill_manual(values = c("grey","green"))
dev.off()
答案 0 :(得分:4)
利用点形21,我们可以使用fill
作为点,使用colour
作为行。按照我们想要的scale_manual设置颜色。请注意colour=transparent
中的geom_point
,以便我们删除点周围的颜色边框。
ggplot(mtcars, aes(x=cyl,y=mpg,fill=factor(gear))) +
geom_point(aes(fill=factor(gear)),colour="transparent",shape=21) +
stat_smooth(aes(colour=factor(gear)),method="lm",se = FALSE) +
scale_colour_manual(values = c("red","blue", "green")) +
scale_fill_manual(values = c("orange","pink", "red"))
答案 1 :(得分:2)
行。我现在看到了你想要的东西(我想......):你希望线组的颜色与点组不同。实质上,您需要四种颜色:两种用于点组,两种用于线组。
这适用于您的样本,并使用For_Cov<0.5
重新编码为“更低”以分割数据。
grid_gdp_full$halfs <- ifelse(grid_gdp_full$For_Cov<0.5,"lower half","upper half")
grid_gdp_full <- cbind(grid_gdp_full,col =
ifelse(grid_gdp_full$halfs=="lower half","lm: lower","lm: upper"))
ggplot(grid_gdp_full, aes(x = For_Cov, y = Per_chg)) +
geom_point(aes(colour = factor(halfs)), alpha = 0.9, size=5) +
stat_smooth(method = "lm", formula = y ~ x + I(x^2), size = 4, fullrange=TRUE,
aes(group = col, colour = factor(col)), alpha = 1) +
xlab("Initial") +
ylab("Percent") +
ylim(0,0.10) +
scale_x_reverse() +
theme_bw() +theme(
axis.text=element_text(size=12)
,axis.title=element_text(size=14,face="bold")
,plot.background = element_blank()
,panel.grid.major = element_blank()
,panel.grid.minor = element_blank()
,panel.border = element_blank()
,panel.background = element_blank()
) +
theme(axis.line = element_line(color = 'black'))
产生这个:
我将点数设得更大并设置alpha=0.9
,这样你就可以看到这个小样本中的点数。你也颠倒了x轴,这使得“低”和“高”都令人困惑。