美文网首页
2020-11-25R语言入门笔记(5)画图

2020-11-25R语言入门笔记(5)画图

作者: 呆呱呱 | 来源:发表于2020-11-25 22:52 被阅读0次

作图分三类

#1.基础包 略显陈旧 了解一下

plot(iris[,1],iris[,3],col = iris[,5]) 
#
text(6.5,4, labels = 'hello')

boxplot(iris[,1]~iris[,5])

dev.off()
#关闭画板


#2.ggplot2 中坚力量 学起来有点难
test = iris
if(!require(ggplot2))install.packages('ggplot2')
library(ggplot2)
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

#3.ggpubr 江湖救急 ggplot2简化和美化 褒贬不一

if(!require(ggpubr))install.packages('ggpubr')
library(ggpubr)

ggscatter(iris,
          x="Sepal.Length",
          y="Petal.Length",
          color="Species")

# STHDA美图中心:www.sthda.com 

重点:ggplot

test = iris
#1.入门级绘图模板
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))
#2.映射




library(ggplot2)
test = iris
#1.入门级绘图模板
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))
#2.映射
ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))


ggplot(data = test)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 23,fill = "black")



#3.分面
ggplot(data = test) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_wrap(~ Species) 

#facet_wrap就是用于分面的函数

#双分面
test$Group = sample(letters[1:5],150,replace = T) #replace = T可放回的抽样的意思
ggplot(data = test) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_grid(Group ~ Species) 

#练习6-1
# 示例数据:ggplot2中数据集mpg

library(ggplot2)
test1 = mpg
# 1.分别以mpg的displ和hwy两列作为横纵坐标,画点图。
ggplot(data = test1)+geom_point(mapping = aes(x = displ,y = hwy))
# 2.尝试修改颜色或大小,从mpg数据框中任选可以用来分类的列。
ggplot(data = test1)+
  geom_point(mapping = aes(x = displ,
                           y = hwy,color = year))


ggplot(data = test1)+
  geom_point(mapping = aes(x = displ,
                           y = hwy,color = year),color="blue")
# 3.根据class列来分面
ggplot(data = test1) + 
  geom_point(mapping = aes(x =displ, y = hwy)) + 
  facet_grid(~ class) 
# 4.根据drv和cyl两个变量来分面
ggplot(data = test1) + 
  geom_point(mapping = aes(x =displ, y = hwy)) + 
  facet_grid(cyl~ drv) 


ggplot(data = test1) + 
  geom_point(mapping = aes(x =displ, y = hwy)) + 
  facet_grid(Group ~ cyl) 


#4.几何对象
#4.1分组
ggplot(data = test) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))

ggplot(data = test) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                            y = Petal.Length,
                            group = Species))
ggplot(data = test) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length,
                          color = Species)) 
#4.2图层
#局部映射和全局映射

ggplot(data = test) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))+
  geom_point(mapping = aes(x = Sepal.Length, 
                           y = Petal.Length))

ggplot(data = test,mapping = aes(x = Sepal.Length, y = Petal.Length))+
  geom_smooth()+
  geom_point()

#练习6-2
# 1.尝试写出下图的代码
# 数据是iris
# X轴是Species
# y轴是Sepal.Width
# 图是箱线图
iris
ggplot(data=iris, mapping =aes(x =Species, y =Sepal.Width)) +
  geom_boxplot( ) + 
  geom_point()+
  #绘制箱线图
  labs(title = "iris", 
       x = 'Species', y = 'Sepal.Width') 

# 2. 尝试在此图上叠加点图,
# 能发现什么问题?

# 3.用下列代码作图,观察结果
ggplot(data=test,aes(x = Sepal.Length,y = Petal.Length,color = Species)) +
  geom_point()+
  geom_smooth(color = "black")
 


ggplot(data=test,aes(x = Sepal.Length,y = Petal.Length,color = Species)) +
  geom_point()+
  geom_smooth()
# 请问,当局部映射和全局映射冲突,以谁为准?
#局部映射为准

#5.统计变换-直方图
View(diamonds)
table(diamonds$cut)



ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))  #可以发现只有X没有Y

#上下两行的代码运行结果是一模一样的
ggplot(data = diamonds) + 
  stat_count(mapping = aes(x = cut))  #每个geom函数都有其对应的stat函数



library(ggplot2)

#统计变换使用场景
#5.1.不统计,数据直接做图
fre = as.data.frame(table(diamonds$cut))
fre

ggplot(data = fre) +
  geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity")  #stat = "identity"意思是给的数据是多少就写多少
#5.2count改为prop
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))  #..prop..看起来很别扭


#6.位置关系

# 6.1抖动的点图
ggplot(data = mpg,mapping = aes(x = class, 
                                y = hwy,
                                group = class)) + 
  geom_boxplot()+
  geom_point()

ggplot(data = mpg,mapping = aes(x = class, 
                                y = hwy,
                                group = class)) + 
  geom_boxplot()+
  geom_jitter()   #将geom_point()换成 geom_jitter() 

# 6.2堆叠直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut,fill=clarity))

# 6.3 并列直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
 
#7.坐标系

#翻转coord_flip()

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip()     #翻转与coord_flip()
#极坐标系coord_polar()
bar <- ggplot(data = diamonds) + 
  geom_bar(
    mapping = aes(x = cut, fill = cut), 
    show.legend = FALSE,
    width = 1
  ) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)
bar + coord_flip()
bar + coord_polar()




library(ggplot2)
iris
ggplot(data = iris,mapping = aes(x = Species,y = Sepal.Width))+
  geom_violin(aes(fill = Species))+
  geom_boxplot( ) + 
  geom_jitter(aes(shape = Species))+
  
  coord_flip()

相关文章

网友评论

      本文标题:2020-11-25R语言入门笔记(5)画图

      本文链接:https://www.haomeiwen.com/subject/qiyoiktx.html