一、常用的可视化包
1)作图包
base:
ggplot2:
ggpubr:
2)拼图包
par里面的mfrow
grid.arrange
cowplot
customLayout
patchwork
二、基础包绘图函数
ps:高级绘图函数是指可以绘制出一张图,而低价绘图函数是指在图中添加的“零部件”,低级绘图函数必须在高级绘图函数的基础上才能绘制,二者都是base包的内容
eg:plot绘图
> plot(iris[,1],iris[,3],col=iris[,5]) #以iris表格第一列作为x轴,第三列作为y轴,根据品种来绘制不同颜色
> text(6.5,4,label="hello") #添加文字,并加上坐标
三、ggplot2绘图(最常用的绘图R包)
⚠️⚠️首先必须 library(ggplot2)
1)入门:映射
> ggplot(data = iris)+
geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length))
1⃣️ggplot是绘制整个画板,data是用于画图的数据
2⃣️geom_point是绘制点图
3⃣️mapping=aes() 开始映射,即x轴的数据是Sepal.Length,y轴数据Petal.Length,不需要加引号
(以上代码的数据的映射放在了具体的geom_point函数中,如果整体映射是一致的,可以把映射放到ggplot()中,这样子如果没有特殊情况,后面的绘图函数不需要重新映射,但是如果映射在geom_开头的函数中,每一个函数都需要重新映射)
例如:
> ggplot(data=iris,mapping = aes(x = Sepal.Length,y = Petal.Length))+geom_point()
以上两种代码的写法,最后画出的图是一致的!!
2)手动设置相关属性
>ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length),
size = 5, # 点的大小5mm
alpha = 0.5, # 透明度 50%
shape = 8, #点的形状
color="blue") #颜色设置
3)通过映射来定义图的某个属性
ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length, color = Species))
Q1:‼️‼️如何指定映射的颜色 scale_color_manual(values= )函数
ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length, color = Species))
+ scale_color_manual(values = c("blue","grey","red"))
总结:映射可以根据某一列的内容分配颜色,手动设置是把图像设置为一个或多个颜色,与数据无关。
Q2:‼️‼️区分fill 和color两种属性
1)空心和实心的形状用color设置即可,因为只有一个颜色
2)有两种颜色的形状,color设置边框、fill设置填充
ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length, color = Species),
shape = 24,fill = "black")
4)分面(根据分组绘出多个图)facet_wrap( )
ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length,color=Species))
+ facet_wrap(~ Species)
5)双分面(把行也分组)
>dat = iris
>dat$Group = sample(letters[1:5],150,replace = T) #不要更改内置数据集,可以把数据集赋值后修改
>ggplot(data = dat) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length))
+ facet_grid(Group ~ Species)
6)几何对象(可以叠加使用)
ggplot() 的映射可以在全局使用,geom_function的映射只能在局部使用
7)柱状图/直方图 (y轴无需映射)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut)) #常用于统计个数,y轴会根据x轴自动计算
也可以把count改成prop,计算百分比
>ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
8)位置关系
a)点图设置
>ggplot(data = iris,mapping = aes(x = Species, y = Sepal.Width, fill = Species))
+ geom_boxplot()+ geom_point()
ggplot(data = iris,mapping = aes(x = Species, y = Sepal.Width,fill = Species))
+ geom_boxplot()+ geom_jitter()
b)堆叠直方图
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut,fill=clarity))
c)并列直方图
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
9)坐标系
coord_flip( ). 翻转坐标系
coord_polar( ) 极坐标系
四、ggpubr绘图
与ggplot2类似,但是不用映射
ggpubr::ggboxplot(iris,x="Species",y="Sepal.Length",color = "Species",shape="Species",add="jitter")
ps:在ggplot2用geom_jitter() ,在ggpubr用add="jitter"
五、保存文件
1)ggplpot2包
ggsave( "example.png")
ggsave(p,filename="example_2.png"). #ggsave也可以保存ggpubr画的图片
2)ggpubr包
ggexport(filename="example_3.png") #ggexport是保存ggpubr的图片 png/pdf格式都可以
3)eoffice包(输出ppt的神器)
topptx(p,"example.pptx") #输出ppt格式的图片,图中的每一个元素都是独立可移动、可编辑
网友评论