绘制glm fit时更改ggplot2中的轴标签

时间:2019-01-21 12:02:35

标签: r ggplot2 glm

我有以下问题: 我的数据看起来像这样

NO              Income_before_taxes Income_aftere_taxes educationLevel
1:               27757               27313              1
2:               40147               38148              2
3:               52240               47880              3
4:               63061               57027              4
5:               92409               78738              5
6:              132985              106661              6

我想对Income_aftere_taxes〜educationLevel进行一目了然的拟合。

我使用以下代码执行此操作:

ggbox <- ggplot(data = fullDataSet, aes(x = educationLevel, y = Income_aftere_taxes))
ggbox <- ggbox + geom_point()
ggbox <- ggbox + geom_smooth(method = "glm")

结果如下所示: enter image description here 但是,如果我想将X轴的轴标签更改为c(“低于高中”,“高中”,“学院”,“副学士”,“学士”,“硕士和博士学位”),不起作用。 要使用scale_x_descrete设置标签,我需要将x轴输入“ educationLevel”转换为因数。但是,这破坏了glm fit。

因此,总而言之,我可以绘制glm fit或更改x轴标签。但是我在一个情节上同时需要两个选项。有办法实现吗?

1 个答案:

答案 0 :(得分:1)

尝试以下操作:此处显示的标签具有代表性。假定教育程度保持为数值矢量,而不是因数或字符。 在这里,我们为标签创建一个字符向量。

mylabels<-c("High School","No High School","Some College","No College",
                                 "College","PhD","Postdoc")

然后我们在x轴上使用它。 [-7]用于保持问题标签的长度。您可以根据需要更改标签。

library(dplyr)
library(ggplot2)    
df %>% 
      ggplot(aes(x = educationLevel, y = Income_aftere_taxes))+geom_point()+
      geom_smooth(method="glm")+
      scale_x_continuous(breaks=c(1,2,3,4,5,6),labels=mylabels[-7])