ggplot2入门大全(实战操作1)

上一篇博客介绍了在ggplot2中绘制最基本的图像,接下来的几篇内容会继续进行实战操作加以巩固。

开始之前,先来解决历史遗留问题。当数据N超过1000时,拟合时的默认平滑算法就不再是"loess"了,而是"gam",不过要加载 mgcv 包。

library(ggplot2)  
library(mgcv)
ggplot(mpg,aes(displ,hwy))+geom_point()+
  geom_smooth(method="gam",formula=y~s(x))

在这里插入图片描述
————————————分割线 —————————————

几种不同的几何对象,图像就不一一展示了,来看一下geom_line()和geom_path()的区别吧。

df <- data.frame(x=c(3,1,5),y=c(2,4,6),
label=c("a","b","c"))
p <- ggplot(df,aes(x,y,label=label))+
  labs(x=NULL,y=NULL)+ //隐藏坐标轴
  theme(plot.title = element_text(size=12))
//缩小标题尺寸
p+geom_point()+ggtitle("point") 
p+geom_text()+ggtitle("text")
p+geom_bar(stat="identity")+ggtitle("bar")
p+geom_tile()+ggtitle("raster")
p+geom_line()+ggtitle("line")
p+geom_area()+ggtitle("area")
p+geom_path()+ggtitle("path")
p+geom_polygon()+ggtitle("polygon")

在这里插入图片描述
在这里插入图片描述

今天的重点——标签

在图像中添加标签文字有时并不容易,ggplot2尚不能完全解决这个问题,但它提供的各类工具可以大大减少我们的工作量。如果还是不满意,那就只能用ps了。。
在R中主要使用geom_text()

  • family 设置字体,当前只有三种通用字体:“sans”(默认)、“serif”和“mono”。

“sans”是无衬线字体,一般与汉字中的黑体对应;“serif”指的是有衬线字体,一般与汉字中的宋体相对应;“mono”指的是等宽字体。

df <- data.frame(x=1,y=3:1,family=c("sans","serif","mono"))
ggplot(df,aes(x,y))+
  geom_text(aes(label=family,family=family))

在这里插入图片描述

  • fontface 设置字体风格,默认(plain)、粗体(bold)和斜体(italic)
df <- data.frame(x=1,y=3:1,
                 face=c("plain","bold","italic"))
ggplot(df,aes(x,y))+
  geom_text(aes(label=face,fontface=face))

在这里插入图片描述

  • 改变文本对齐的方式需要设置参数 hjust(“left”,“center”,“right”,“inward”,“outward”)和vjust(“bottom”,“middle”,“top”,“inward”,“outward”),默认对齐方式均为居中“center”。其中,“inward”比较有用,它把文字向图形中央对齐。
df <- data.frame(x=c(1,2,1,2,1.5),y=c(1,1,2,2,1.5),
                 text=c("bottom-left","bottom=right",
                        "top-left","top-righy","center")
)
ggplot(df,aes(x,y))+geom_text(aes(label=text))
ggplot(df,aes(x,y))+geom_text(aes(label=text),
                              vjust="inward",hjust="inward")

在这里插入图片描述
在这里插入图片描述

  • size调整字体大小,值得注意的是,ggplot2字体不以常见的磅(pts)为单位,而是使用毫米(mm)。

将pt换算为mm,只需乘72.27/25.4

  • angle定义文本的旋转角度
  • 一般我们在给数据点添加标签时,并不希望标签覆盖点(或条形)上,而是想错开一点。nudge_x和nudge_y参数设置文本在数据点附近的具体位置。
df <- data.frame(trt=c("a","b","c"),resp=c(1.2,3.4,2.5))
ggplot(df,aes(resp,trt))+geom_point()+
  geom_text(aes(label=paste0("(",resp,")")),
        nudge_y=-0.25) + xlim(1,3.6)

在这里插入图片描述

  • 如果check_overlap=TRUE,重叠标签会自动删除。这个功能比较鸡肋,简单了解一下。
ggplot(mpg,aes(displ,hwy))+
  geom_text(aes(label=model))+xlim(1,8)
ggplot(mpg,aes(displ,hwy))+
  geom_text(aes(label=model),
            check_overlap = TRUE)+xlim(1,8)

在这里插入图片描述
在这里插入图片描述

  • geom_label是geom_text的衍生版本,可以在文本外绘制矩形框。
label <- data.frame(waiting=c(55,80),eruptions=c(2,4.3),
                    label=c("peak one","peak two"))
ggplot(faithfuld,aes(waiting,eruptions))+
  geom_tile(aes(fill=density))+
  geom_label(data=label,aes(label=label))

在这里插入图片描述

总的来说,用R添加标签不太方便,根据实际情况选择吧,能用则用,不能用也不强求,毕竟任何软件都不是万能的。

如果有帮到你,记得点个关注~ 😃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值