R ggplot2画图 注释和坐标系调整

如何修改坐标轴的显示范围

  • scale_x_continuous()
  • scale_y_continuous()
  • xlim(min,max)
  • ylim(min,max)
  • p + scale_x_continuous(limits = c(-5,15)) 
    #将x轴刻度显示范围设置为-5到15
    p + scale_y_continuous(breaks=seq(1, 7, 1),limits=c(0,7))
    # breaks()可以设置 显示范围,这里是1到7,间隔是1。limits()设置的是 实际的范围,例如这里实际范围是0到7。所以y轴的范围是0到7,但是数字显示1到7,间隔是1。
    

    如何修改坐标轴的刻度标签(内容):

    scale_x_continuous(breaks=seq(), labels=c())
    scale_y_continuous(breaks=seq(), labels=c())

    将x轴的标签 1 2 5 7修改为 张1 张2 张3 张4
    p + scale_x_continuous(breaks=seq(1, 7, 2), labels = c("张1","张2","张3","张4"))+theme(text = element_text(family = "HYTiaoTiaoTiJ"))
    

    修改 坐标轴刻度标签的大小、字体、颜色、加粗、位置、角度

    theme(axis.text.x =)
    theme(axis.text.y =)

    p + theme(axis.text.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
    

    删除刻度标签

    theme(axis.text = element_blank()) ## 删去所有刻度标签
    theme(axis.text.y = element_blank()) ## 设置 axis.text.y 则只删去 Y 轴的刻度标签,X 轴同理。
    theme(axis.text.x = element_blank()) ##只删去 X 轴的刻度标签。

    删除刻度线

    theme(axis.ticks = element_blank()) ## 删去所有刻度线
    theme(axis.ticks.y = element_blank()) ## 只删去 Y 轴的刻度线
    theme(axis.ticks.x = element_blank()) ## 只删去 x 轴的刻度线

    如何给坐标轴和图形添加标题

    xlab x轴标题 ylab y轴标题 ggtitle 图形标题
  • labs(x = "x轴标题", y = "y轴标题", title = "图形标题")
  • p + xlab("这是 X 轴") + ylab("这是 Y 轴") + ggtitle("这是标题")
    p + labs(x = "这是 X 轴", y = "这是 Y 轴", title = "这是标题")
    

    如何设置中文字体

    如果想要设置中文的字体,则需要定义字体的格式,比如宋体、华文楷体等。
    但是定义的字体需要是电脑上已经有的。
    拿我自己的mac举例子。需要去 字体册,查看所要定义的字体对应的英文。如下图,选择汉仪跳跳体简,对应的英文为HYTiaoTiaoTiJ。
    theme(text = element_text(family = , face=))
    family:Font family(字体名称)
    还可以定义 字体的一些参数,比如加粗,斜体等。是通过 face参数来指定的。face:Font face(字体) ("plain普通", "italic斜体", "bold加粗", "bold.italic加粗并斜体")
    p + labs(x="群体",y="收获体重")+ theme(text = element_text(family = "HYTiaoTiaoTiJ"))

    修改 X 轴标题的大小、字体、颜色、加粗、位置、角度

    theme(axis.title.x=)
    theme(axis.title.y=)

    p + xlab("这是 X 轴") + theme(axis.title.x = element_text(size = 15, family = "HYTiaoTiaoTiJ", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45)) 
    # axis.title.x 修改的是x轴标题
    p + theme(axis.text.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45)) 
    # axis.text.x 修改的是x轴的刻度标签
    

    去掉默认的网格线

    theme(panel.grid=element_line(colour=NA)) #panel.grid 网格线

    删去外层边框

    theme(panel.border = element_blank()) ## 删去外层边框

    删除外层边框之后怎么在加上x轴和y轴的坐标轴

    theme(axis.line = element_line(size=1, colour = "black")) ## 再加上坐标轴(无刻度、无标签)

    如何为一个图形添加注释

    可以使用annotate()函数对图像添加注解
    annotate(geom="", x=, y=, label="", family="", fontface="", colour="", size=#)

  • geom表示添加注解的类型,如果=“text”,则表示为文本类型;其他类型查看?annotate
  • x、y是给注解在图中赋予一个坐标
  • label为要注释的内容
  • family、fontface、colour、size等是分别用来控制注解的字体、样式、颜色、大小等
  • annotate()和geom_text()有所不同:前者用来添加单独的文本对象,后者则会根据数据创建许多文本对象
    annotate("text", x=1.7, y=5, label="= -0.60*** ",size=4) # 在x为1.7,y
    为5的地方加入注释 -0.60*** ,大小为4。
  • p+mytheme+annotate("text", x=0.5, y=5, label="r",fontface="italic",size=4)+
      annotate("text", x=1.7, y=5, label="= -0.60***   ",size=4)
    

    为分面画图的每一个图形 分别 添加独立的注释

    在创建分面后配合数据框使用geom_text()函数
    在分面后将因子的标签映射到geom_text()上即可使得每个分面出现对应因子标签的注解

    p<-ggplot(data=exp1_statanalysis_longdata_valid_new, aes(x=Fair, y=Punish_amount))+
      geom_point(size=0.6)+
      geom_smooth(method="lm", color="#0072B5FF")+
      labs(x="The fairness at the distribution", y="The amount of punishment")+
      facet_grid(. ~ Intention_Outcome)+
      scale_y_continuous(breaks=seq(0, 6, 2))+
      scale_x_continuous(breaks=seq(-5, 5, 2))
    corr_labels <- data.frame(Intention_Outcome=c("fair_unfair","unfair_fair","unfair_unfair"), label1=c("r","r","r"),label2=c("= -0.17","= -0.48***"," = -0.36* ")) 
    #设置需要添加的标签的内容,因为用了facet_grid来分面,所以标签要分别设置。
    # geom_text()添加文字内容。x表示x轴的坐标,y表示y轴的坐标
    # fontface为字体:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
    p + geom_text(x=-3, y=6, aes(label=label1), fontface="italic",size=3,data=corr_labels)+
      geom_text(x=-0.8, y=6, aes(label=label2),size=3,data=corr_labels)+mytheme1
    

    为分面画图的每一个图形 都添加统一的注释

    使用annotate()函数,为所有分面都添加统一的标签
    p + annotate("text", x=6, y=42, label="label text")

    设置画图的主题

    mytheme<-theme(axis.title.y=element_text(face="bold",size=12,color="black"),#修改y轴标题的字体为加粗,12,颜色黑色。
                   axis.title.x=element_text(face="bold",size=12,color="black"),
                   #axis.title.x=element_blank(),#删去x轴的标题
                   axis.text=element_text(face="bold", size=11,color="black"),# 设置x轴和y轴的刻度标签 字体为加粗,11,颜色黑色。
                   panel.background=element_rect(fill="white"),#设置 panel.background:绘图区背景色 为白色
                   panel.border=element_blank(),# panel.border:去除绘图区边框
                   axis.line=element_line(color="black",size=1),# 去除绘图区边框后,加上x轴和y轴的轴线 颜色为黑色,size为1.
                   panel.grid.minor=element_blank(),# panel.grid.minor:次要网格线,除了与坐标轴的标签对应的主要网格线外的线
                   panel.grid.major=element_blank(),# panel.grid.major: 主要网格线,与坐标轴的标签对应的网格线
    # 上面panel.grid.minor和panel.grid.major这两句可以改写为
    # panel.grid=element_line(colour=NA) 
    # 等价于panel.grid=element_blank()
                   legend.position="right",# 设置图例的位置在 右侧
                   legend.title=element_text(face="bold",color="black"),# 设置图例的标题 文本为 加粗 黑色 
                   legend.text=element_text(face="bold",color="black"))# 设置图例的文字 为 加粗 黑色