赞
踩
目录
函数 | 数据类型 | 图形 |
---|---|---|
plot() | 数值 | 散点图 |
plot() | 因子 | 条形图 |
plot() | 一组频数 | 条形图 |
plot() | 数值,数值 | 散点图 |
plot() | 因子,因子 | 脊形图 |
plot() | 二维列联表 | 马赛克图 |
plot() | 数值、因子 | 箱线图 |
plot() | 因子、数值 | 带状图 |
plot() | 数据框 | 散点图矩阵 |
以birthwt数据框为例:
- attach(birthwt)
- birthwt$low=factor(low)
- birthwt$race=factor(race)
- birthwt$smoke=factor(smoke)
- birthwt$ptl=factor(ptl)
- str(birthwt)
- par(mfrow=c(2,2))
- plot(birthwt$age)#数值
- plot(birthwt$low)#因子,分类变量
- plot(birthwt$age,birthwt$lwt)#数值,数值
- plot(birthwt$race,birthwt$smoke) #因子,因子
- plot(birthwt$age,birthwt$race) #因子,数值——带状图
- plot(birthwt$race,birthwt$age) #数值,因子——箱线图
- mytable=table(birthwt$low,birthwt$race)
- plot(mytable)#二维列联表——马赛克图
- a=table(birthwt$race)
- plot(a)#一组频数——条形图
plot(birthwt)
注意:plot是高级绘图函数,text是低级函数,所以不能单独运行低级函数,只能在高级基础上进行
par()函数来设置绘图的相关参数(字体、坐标轴、标题等),这种方式设置的绘图参数会对后续的绘图进程持续有效,除非你修改这些参数。
- par() #查看当前的绘图参数
- opar <- par() #复制当前的绘图参数
- par(col.lab="red") #设置x轴和y轴标签为红色
- par(opar) #恢复最初的绘图参数
大部分参数既可以在par()
中设置,又可以在plot()
中设置,区别在于前者设置的参数对全局起作用,后者设置的参数只对本条命令起作用,相当于plot()
中的...
参数,个别参数在两种情况下面对的对象也不同。还有,以下参数只能在par()
中使用:
文本与符号:
主标题 main=“标题”
副标题 sub=“副标题”
轴标题 x轴:xlab="标题" , y轴:ylab="标题"
字体:
font | 指定使用的字体,1是普通字体, 2代表粗体, 3代表斜体。 |
点—绘图符号:
pch=这个参数去指定图中点的形状,它的值是数字,不同数字代表不同的符号,对于21~25号,我们需要指定边框的颜色(col=)和填充色(bg=),cex=控制点状要素相对默认大小的倍数;。
点线绘图:
使用参数type=设置,点线的组合方式:
线类型和宽度:
使用lty=设置不同的线类型,具体参数同为数字,比如虚线、实线等
参数取值 含义 lwd=1 默认宽度 lwd=k 默认宽度的k倍 lwd=-k 默认宽度的1/k倍
lend=:控制线状要素端点的形状,整型参数。0表示圆角,1表示短直角,2表示长直角;
颜色参数:
参数取值 用col=设置点的颜色,英文不能缩写,要写全,可以是RGB对应的编码值或者颜色名称,十六进制符。bg=设置背景色,fg=设置前景色。
- bg在
par()
设置时表示整个绘图页面的背景颜色,在plot()
设置时只表示绘图图形的背景色;- fg表示除绘图图形要素以外的几何图形的颜色,如边框、坐标轴刻度线。
坐标轴范围:
在plot函数中,用xlim=c(坐标轴的两个端点值)指定横坐标的范围,用ylim=指定纵坐标的范围
xaxp、yaxp:分别控制x轴和y轴刻度线标记的起始位置和间隔数量,形式为c(x1, x2, n)或c(y1, y2, n),依次表示刻度线起、始位置和间隔个数;
lab:控制坐标轴刻度个数,形式为c(x, y, len),默认值为c(5,5,7),依次表示x和y轴刻度个数,len为无效参数。
二级命名参数:
构成规则:主参数+要素关键字
关键字及含义:axis——坐标刻度值,lab——坐标轴标签,main——图形标题,sub——图形副标题;
颜色:col.axis、col.lab、col.main、col.sub;
大小:cex.axis、cex.lab、cex.main、cex.sub;
字体:font.axis、font.lab、font.main、font.sub。
其他常用参数:
排版 mfrow=c(行数,列数)
位置 pos=1表示下,2表示左,3表示上,4表示右
尺寸 pin=c(宽度值,高度值)
边界 mai=c(下边界大小值,左边界大小值,上边界大小值,右边界大小值)
案例:某病人对2种药物(drugA和drugB)、5个剂量水平的响应情况。
- dose <- c(20,30,40,45,60)
- drugA <- c(16,20,27,40,60)
- drugB <- c(15,18,25,31,40)
药物A的剂量与响应关系的图形:
- par(mfrow=c(1,3))
- plot(dose,drugA)
- plot(dose,drugA,type="b")
- plot(dose,drugA,type="b",
- xlab = "Dosage",ylab="Response",
- lty=1,pch=15)
- lines(dose,drugB,type="b",lty=2,pch=17)
- legend("topleft",title = "Drug type",
- legend=c("A","B"),
- lty=c(1,2),
- pch=c(15,17))
legend()里面的点和线的属性必须与前面函数plot( )和line()中设置的属性一致。
4.1 绘制直方图
- data(anorexia,package = "MASS")
- hist(anorexia$Prewt)#绘制频数直方图的函数hist
没有设置参数时,hist对变量prewt的频数分布使用了默认的组距、坐标轴标签和标题。
- hist(anorexia$Prewt,
- breaks = 9,
- freq = F,col="lightblue",
- col.axis="blue",col.lab="black",
- xlab = "体重",
- main="治疗前后体重分布直方图",
- las=1)
参数break可以设置分组,freq参数设置将坐标轴转换为频率,参数las=1,表示把纵坐标的刻度横向展示。
当需要加入概率密度曲线时,可以使用函数density()
- plot(density(anorexia$Prewt))
- lines(density(anorexia$Prewt),
- lwd=3,
- col="red")
- rug(anorexia$Prewt) #添加轴须图,展示数据的分布密度趋势
如果直接绘制plot函数,会将原来的图片覆盖,如果想要图形上的叠加,只能使用上面介绍的常用绘图函数。
4.2 绘制条形图
(1)barplot()用于展示频数分布
案例:绘制某药物治疗类风湿性关节炎的疗效的条形图
- library(vcd)
- data("Arthritis")
- attach(Arthritis)
- counts <- table(Improved)
- barplot(counts, #需要绘制的数据
- xlab="Improvement",
- ylab = "Frequency",
- col="green",
- las=1)
-
- barplot(counts, #需要绘制的数据
- xlab="Improvement",
- ylab = "Frequency",
- col=c("green","blue","red"),#把颜色设置为向量可以输出三个分组用不同的颜色
- las=1)
(2)barplot( )用于展示二维列联表数据
案例:需要展示治疗组和对照组中,疗效的情况
- barplot(counts,
- col =c("red","yellow","green"),
- xlab = "疗效",
- ylab = "频数",
- col.lab="black",
- las=1)
- barplot(counts,
- col =c("red","yellow","green"),
- xlab = "疗效",
- ylab = "频数",
- col.lab="black",
- beside=T,#分开展示不同的疗效
- las=1)
-
- legend("top",legend = rownames(counts),
- fill =c("red","yellow","green") )

(3)条形图展示均值,标准差等统计参数
epiDisplay包中的aggregate.plot()函数可以简化实现。
- library(epiDisplay)
- aggregate.plot(anorexia$Prewt,
- by=list(anorexia$Treat),#分组信息,by=list()
- error="sd",
- legend = T,
- bar.col =c("red","yellow","green"),
- ylim = c(0,100),las=1,
- main = "不同治疗方式组中治疗前体重")
图中的误差棒表示的是标准差,我们可以通过改变参数error的取值设置显示标准误或置信区间
4.3 饼图
- percent <- c(5.8,27.0,0.5,20.8,12.8,33.1) #百分比值
- disease <- c("上感","中风","外伤","晕厥","食物中毒","其他")
- lbs <- paste0(disease,percent,"%")
- pie(percent,labels = lbs,col = rainbow(6))
4.4 箱线图和小提琴图
箱线图(box plot)用于展示数据的分布特征,探索有无异常值或者离群值。
案例:治疗前后的体重变化
- anorexia$wt.change <-anorexia$Prewt-anorexia$Postwt
- boxplot(anorexia$wt.change,
- ylab="weight change(lbs)",
- las=1)
箱线图的内容:中间比较粗的是中位数,箱的上线是上四分位数,下线为下四分位数。在上边缘线和下边缘线之外的值通常被认为是异常值。
案例:比较不同治疗组的体重变化,增加了治疗的分组
- boxplot(wt.change~Treat,data=anorexia,
- ylab="weight change(lbs)",
- col=rainbow(6),
- las=1)
boxplot()函数中,第一个参数输入的是一个公式,R的公式一般用~连接变量,“~”的左边可以看作因变量,右边看作自变量。
小提琴图(violin plot)可以看作箱线图和密度图的结合,vioplot包中的vioplot()可用于绘制小提琴图
- #install.packages("vioplot")
- library(vioplot)
- vioplot(wt.change~Treat,data=anorexia,
- ylab="weight change(lbs)",
- col=rainbow(6),
- las=1)
4.5 克利夫兰点图
克利夫兰点图本质也是散点图,它通过点的位置展示数据的大小,是一种在简单水平刻度绘制大量有标签值得方法。函数dotchart( )用于绘制克利夫兰点图。
案例:数据集VADeaths数据集记录的是某地城市和农村不同年龄段的死亡率
- data("VADeaths")
- dotchart(VADeaths)
- dotchart(VADeaths,pch = 19)
4.6 导出图片
通过export或者复制出来的图片一般会受到窗口大小影响,因此建议直接用代码保存。
- pdf("mygraph.pdf")
- dotchart(VADeaths,pch = 19)
- dev.off()
保存成为pdf格式,还可以用png( ),jpeg( ),tiff(),postscript()等将图片保存为其他格式。bmp,png,jpg格式都是非矢量图片,tiff()较为出版物常用。
- tiff(filename = "mygraph.tiff",#一定要有后缀,无论哪种格式
- width = 15,height = 12,units = "cm",#设置图形的宽度和高度及单位
- res=300)#res=设置分辨率
- vioplot(wt.change~Treat,data=anorexia,
- ylab="weight change(lbs)",
- col=rainbow(6),
- las=1)
- dev.off()
模板1:
ggplot(data=<DATA>)+
<GEOM_FUNCTION>(mapping=aes(<MAPPINGS>))
DATA:数据;GEOM_FUNCTION:GEOM开头的绘图函数;MAPPING:x,y轴模板2:
ggplot(data=<DATA>,mapping=aes(<MAPPING>))+
<GEOM_FUNCTION>
- library(ggplot2)
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species))
- #格式2:
- ggplot(iris,mapping = aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species))+
- geom_point()
第二种思路比较容易理解和记住,笔者常用第二种格式。
ggplot2的特殊语法:列名不带引号,行末写加号
属性的设置,跟数据无关,只跟图形的形状颜色相关
手动设置:需要设置为有意义的值
颜色 color:字符串,blue,red等
大小:size:单位mm
形状:shape:有默认的图形编号
透明度:alpha
填充颜色:fill
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length),
- color="blue")
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length),
- color="red")
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length),
- color="green",#点的颜色为绿色
- size=5,#点的大小为5mm
- alpha=0.5,#不透明度为50%
- shape=8) #点的形状为8号形状
映射:按照数据框的某一列来定义图的某个属性,比如不同治疗方式用不同颜色表示。
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species))
- #Species这一列有三个取值,默认为三个不同颜色
注意:color在aes函数的内外表示的意义不同。上述的代码中color是aes的参数,是列名作为映射,三种取值默认分配三种颜色对应不同分组。而下面的代码color是geom_point的参数,是具体的颜色,RGB,不能是列名。
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length),
- color="red")
- 映射:根据数据的某一列的内容分配颜色
- 手动设置:把图形设置为一个或n个颜色,与数据内容无关
自行指定映射的颜色:
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species)) +
- scale_color_manual(values = c("blue","grey","red"))#使用颜色名称
-
-
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species)) +
- scale_color_manual(values = c("#666666","#808A87","#808069")) #使用RGB值作为颜色对象
其他属性可以将color改为size,shape等属性,eg:scale_size_manual()。注意:scale内的内容必须与color的种类数目匹配,如果没有指定color映射的对象,虽然不报错,但是scale不发挥作用。
color与fill的区别:
- shape的形状如果是实心或者空心的图时,只需要color就可以指定颜色;
- shape的形状如果是有边框的图形,内心的填充需要用fill指定,color指定的是边框的颜色
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species),
- shape=2) +
- scale_color_manual(values = c("blue","grey","red")) #空心图案
-
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species),
- shape=17) +
- scale_color_manual(values = c("#666666","#808A87","#000000")) #实心图案
-
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species),
- shape=24,fill="black") +
- scale_color_manual(values = c("blue","grey","red")) #带有边框的shape图形

分面是将整个数据按照某一个或几个分类变量分成多个子集,然后用这些子集分别作图。
使用facet_grid( )或facet_wrap( )函数,并指定根据哪个变量来分割数据。
- #按列分面
- ggplot(data=iris)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species)) +
- scale_color_manual(values = c("blue","grey","red"))+
- facet_wrap(~Species) #按照species这一列取值将图形分别画
- #按行分面
- dat=iris #不能在iris中修改,所以另外定义一个数据框。
- dat$group=sample(letters[1:5],150,replace = T)
- #letters是R语言自带的数据24个字母,从中取出第一个到第五个字母;150指的是从1:5中随机抽取150次,组合形成group这一列;repla=T可以重复抽取;
- ggplot(data=dat)+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length,
- color=Species)) +
- scale_color_manual(values = c("blue","grey","red"))+
- facet_grid(group~Species)
- #facet_grid表示行按照group的取值分组,列按照species分组
2.2 分面函数的详细讲解(不需要可以跳过)
2.2.1 facet_wrap()按列分面
facets:分面变量;使用vars()函数加以引用。
(1)不添加分面变量时:
- library(ggplot2)
- data("mtcars")
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_wrap(vars())
-
- ggplot(mtcars)+
- geom_point(mapping=aes(x=mpg,y=qsec),
- color="red",
- shape=10)+
- facet_wrap(vars())
(2)添加分面变量:以列gear作为分列变量
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_wrap(vars(gear))#gear有三个取值,3,4,5
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_wrap(~gear)
如果想要根据gear的取值对颜色进行映射?
- mtcars1=mtcars
- table(mtcars1$gear) #三个取值,便于输入几个颜色
- str(mtcars1)
- mtcars1$gear1=as.character(mtcars1$gear)
在映射时,按照分类的组别可以是数值型,字符型,但是要自定义颜色类型时,只能是字符型,所以需要将gear转化为新的列字符型的gear1
- #默认的颜色映射
- ggplot(mtcars1)+
- geom_point(mapping = aes(x=mpg,y=qsec,color=gear),
- shape=18)+
- facet_wrap(vars(gear))
- #自定义颜色映射
- ggplot(mtcars1)+
- geom_point(mapping = aes(x=mpg,y=qsec,color=gear1),
- shape=18)+
- scale_color_manual(values = c("red","blue","black"))+
- facet_wrap(vars(gear))#facet_wrap后面的数据类型没有限制,可以是gear数值型,也可以是gear1字符型
常用参数:
1.nrow、ncol:控制分面后子图排列的行数或列数
- ggplot(mtcars1)+
- geom_point(mapping = aes(x=mpg,y=qsec,color=gear1),
- shape=18)+
- scale_color_manual(values = c("red","blue","black"))+
- facet_wrap(vars(gear),nrow=2,ncol=2)
2. scales:控制子图坐标刻度是否保持一致。fixed表示子图的横、纵坐标都保持一致;free表示各子图坐标刻度自由变化;free_x、fix_y分别表示允许横、纵坐标自由变化。
- ggplot(mtcars1)+
- geom_point(mapping = aes(x=mpg,y=qsec,color=gear1),
- shape=18)+
- scale_color_manual(values = c("red","blue","black"))+
- facet_wrap(vars(gear),nrow=1,ncol=3,
- scale="free_y")
y轴自由变化,x轴横坐标固定一致
3. labeller:修改子图标题格式。
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_wrap(vars(gear), nrow = 1,
- labeller = label_both)
4. as.table:修改子图排列顺序。TRUE表示分面变量数值越大对应的子图越靠近左下方;FALSE表示数值越大越靠近右上方。 5. drop:当分面变量是因子类型时,是否删除没有对应样本的因子水平。
6. dir:控制子图排列顺序。h(默认值)表示水平排序,即先左右、后上下;v表示垂直排序,即先上下、后左右。
7. strip.position:控制子图标题位置(top、bottom、left、right)。eg:strip.position = "bottom"
2.2.2 facet_grid( )分面变量
可以分面行也可以分面列:
- #行分面变量
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(rows = vars(gear),
- labeller = label_both)
-
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(gear~.,
- labeller = label_both)
- #列分面变量
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(cols = vars(vs),
- labeller = label_both)
-
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(. ~ vs,
- labeller = label_both)

- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(rows = vars(gear),
- labeller = label_both) #行分面
- ggplot(mtcars,aes(mpg,qsec))+
- geom_point()+
- facet_wrap(vars(gear),nrow=3,
- labeller = label_both) #列分面设置行数达到行分面
比较图形区别:
行列同时分面:
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(gear ~ vs,
- labeller = label_both)
可以利用margin参数增加边际值:
- ggplot(mtcars, aes(mpg, qsec)) +
- geom_point() +
- facet_grid(gear ~ vs,
- margins = c("gear", "vs"),
- labeller = label_both)
一个geom函数绘制出来的图像叫做一个几何对象,几何对象可以叠加。
- library(ggplot2)
- ggplot(iris)+
- geom_smooth(mapping=aes(x=Sepal.Length, #局部,只对当前图层有效
- y=Petal.Length))+
- geom_point(mapping=aes(x=Sepal.Length,
- y=Petal.Length))
- #或者
- ggplot(iris,aes(Sepal.Length,Petal.Length))+ #全局,对于所有几何对象有效
- geom_point()+
- geom_smooth()
两种方法的本质区别在于:第一种数据在于局部的geom函数种可以调整不同图形的数据,具有各种图形的独立性;第二种数据是统一的,所有的图基于同一组数据产生。
4.1 ggplot2的其他参数
主题(theme)函数用于定义绘图的风格。
- #没有主题
- ggplot(iris,aes(Sepal.Length,Petal.Length))+
- geom_point()+
- geom_smooth()
- #添加经典主题
- ggplot(iris,aes(Sepal.Length,Petal.Length))+
- geom_point()+
- geom_smooth()+
- theme_classic()
位置关系
- ggplot(iris,aes(x=Species,y=Sepal.Length))+
- geom_boxplot(aes(color=Species))
-
- ggplot(iris,aes(x=Species,y=Sepal.Length))+
- geom_boxplot(aes(color=Species))+
- geom_jitter(aes(color=Species))
坐标系
#ggplot绘图完整模板
#ggplot(data=<DATA>)+ #DATA数据
# <GEOM_FUNCTION>(mapping=aes(<MAPPINGS>),
# stat=<STAT>, #STAT统计变换,“identity”
# position=<POSITION>)+ #位置关系,是否是散落
# <COORDINATE_FUNCTION>+ #坐标系
# <FACET_FUNCTION>
4.2 频数统计条形图geom_bar
单因素:
- ggplot(data=diamonds)+
- geom_bar(mapping=aes(x=cut)) #cut是需要统计频数的列,分类变量
- #或
- ggplot(data=diamonds)+
- stat_count(mapping=aes(x=cut))
- ggplot(data=diamonds)+
- geom_bar(mapping = aes(x=cut,y=Fred),stat="identity")
- #Fred是已经统计好的频数,如果不想要系统统计,需要指定y,则需要加入函数stat=“identity”
两因素:
- data("Arthritis",package = "vcd")
- ggplot(Arthritis,aes(x=Treatment,fill=Improved))+
- geom_bar(color="black")+
- scale_fill_brewer()+
- theme_bw()
通过增加参数position=fill实现展示相对比例,position=dodge将条形图并排放置。
- data("Arthritis",package = "vcd")
- ggplot(Arthritis,aes(x=Treatment,fill=Improved))+
- geom_bar(color="black",position = "fill")+
- scale_fill_brewer()+
- theme_bw()
-
-
- data("Arthritis",package = "vcd")
- ggplot(Arthritis,aes(x=Treatment,fill=Improved))+
- geom_bar(color="black",position = "dodge")+
- scale_fill_brewer()+
- theme_bw()
4.3 频数比例图
- ggplot(diamonds)+
- geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
- #..prop..表示显示百分比,group=1表示总的值为1,总体是总频数
- ggplot(diamonds)+
- geom_bar(mapping=aes(x=cut,y=..prop..))
- #去掉group=1,则每个取值都被认为是总体,所以所有组都是100%
4.3 频数分布直方图
- data(anorexia,package = "MASS")
- anorexia$wt.change <-anorexia$Prewt-anorexia$Postwt
绘制体重变化的直方图:
- #基础包绘图
- hist(anorexia$wt.change,breaks=16,
- col="skyblue",
- xlab = "Weight Change(lbs)",
- las=1)
-
- #ggplot2
- ggplot(anorexia,aes(x=wt.change))+
- geom_histogram(binwidth = 2,fill="skyblue",color="black")+
- labs(x="Weight Change(lbs)")+
- theme_bw()
上述频数分布图,binwidth用于设置组具,默认值为全距除以30,参数fill用于设置填充的颜色,color用于设置矩形边框的颜色。如果要实现频率分布直方图
- #基础包绘图
- hist(anorexia$wt.change,breaks=16,
- freq = F,
- col="skyblue",
- xlab = "Weight Change(lbs)",
- las=1)
- lines(density(anorexia$wt.change),
- col="black",
- lty=2,
- lwd=3)
- dev.off()
- #ggplot2
- ggplot(anorexia,aes(x=wt.change,y=..density..))+
- geom_histogram(binwidth = 2,fill="skyblue",color="black")+
- stat_density(geom = "line",linetype="dashed",size=1)+
- labs(x="Weight Change(lbs)")+
- theme_bw()

基础包使用freq=F实现频率转换,再用低级函数lines绘制密度图,ggplot2在aes函数中y=..density..实现频率,stat_density( )是一种用于计算密度估计曲线的统计变换。比较不同治疗组的密度曲线时,可以将 linetype设置为分组变量treat。
- ggplot(anorexia,aes(x=wt.change,color=Treat,linetype=Treat))+
- stat_density(geom = "line",size=1)+
- labs(x="Weight Change(lbs)")+
- theme_bw()
color和linetype进行了映射,所以放在了aes函数中。
4.4 箱线图
- ggplot(anorexia,aes(x=Treat,y=wt.change,fill=Treat))+
- geom_boxplot()+
- geom_jitter()+
- theme_bw()
fill是填充的颜色,col是边框颜色注意区分
如果要对数据进行比较,需要进行假设检验,ggpur包提供了在平行箱线图上添加组间比较的统计学差异的功能。
比如对上述三个组进行均值的比较:
- #install.packages("ggpubr")
- library(ggpubr)
- my_comparison <- list(c("CBT","Cont"),c("CBT","FT"),c("FT","Cont"))
- ggplot(anorexia,aes(x=Treat,y=wt.change,fill=Treat))+
- geom_boxplot()+
- stat_compare_means(comparisons = my_comparison,
- method = "t.test",
- color="blue")+
- theme_bw()
函数ggsave()专门用来保存ggplot2包绘制的图形,可以导出为不同格式的图片
- library(ggplot2)
- p <- ggplot(mtcars,aes(wt,mpg))+
- geom_point()
- ggsave("myplot.png",p)
- ggsave("mtplot.pdf",p)
- ggsave("myplot.tiff",width = 15,height = 12,units = "cm",dpi = 500)
ggplot绘制的图形不能使用par()函数组合,可以使用拼图包patch包
- #R包:patchwork
- install.packages("patchwork")
- library(patchwork)
- p <- ggplot(mtcars,aes(wt,mpg))+
- geom_point()
- q <- ggplot(mtcars,aes(wt))+
- geom_boxplot()
- p+q
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。