用ggplot2画图一定一定不要忘了写“+”

最近在学R,试着用ggplot,找了一个比较完整的用python做的案例,想着把所有的结果都用R做一遍。

一开始是一些描述性统计和直方图之类的东西,找书和经验贴都找到了相关的程序。可是却遇到了一个困扰了我好几天的图:

 图1

一开始我只会画简单的单个的图,复杂点的比如改轴的刻度、显不显示图例等等我都是不会调的。

今天从晚上六点半开始就一直试图模仿一下这个。

目录

1、多个图组合到一张图中

2、绘制点图(xlim(2,12)这行代码是后加上去的,就忘了写“+”)

3、改变轴的显示样式(不显示图标、刻度、轴的名字)

 4、设置合适的比例和留白


1、多个图组合到一张图中

library(ggplot2)
library(cowplot) #下载这个包并调用
a <- ggplot(crop,aes(x=temperature))+#--温度
  geom_histogram(aes(y=..density..),color='white',fill='red',
                 alpha=.35,binwidth=3.4)+
  scale_x_continuous(breaks = seq(10,45,5))+
  geom_density(color='red')
b <- ggplot(crop,aes(rainfall))+ #----降水
  geom_histogram(aes(y=..density..),color='white',fill='blue',
                 alpha=.25,binwidth = 28)+
  scale_x_continuous(breaks = seq(50,300,50))+
  geom_density(color='blue')
c <- ggplot(crop,aes(ph))+#-----------ph
  geom_histogram(aes(y=..density..),color='white',fill='orange',
                 alpha=.35,binwidth = .4)+
  scale_x_continuous(breaks = c(5:9))+
  geom_density(color='orange')
d <- ggplot(crop,aes(humidity))+#----------湿度
  geom_histogram(aes(y=..density..),color='white',fill='purple',
                 alpha=.35,binwidth = 5)+
  scale_x_continuous(breaks = seq(20,100,20))+
  geom_density(color='purple')
plot_grid(a,b,c,d,nrow=2)  #把上边的四个图组合到一起

于是它输出了图2

图2

 完全符合预期,接下来试着做上边那张棘手的图1。

2、绘制点图(xlim(2,12)这行代码是后加上去的,就忘了写“+”)

g <- ggplot(crop,mapping = aes(x=ph,y=temperature,col=label))+ #散点图
  geom_point(size=3)+ #点的大小
  xlim(2,12)+ #x轴的范围设置为2到12
  guides(color=guide_legend(override.aes = list(size=2)))+#图例颜色
  guides(shape=guide_legend(override.aes = list(size=2)))+#图例形状
  theme(legend.position = c(.88,.28), #图例的位置在输出的图里边,默认在图外边的右侧
        legend.title = element_text(size =5),
        legend.text = element_text(size=5),#图例的文字大小
        legend.background = element_rect(
          fill = "#EBEBEB", # 填充色
          colour = "#EBEBEB", # 框线色
          size = 1.5 ))

输出图3

图3

这里颜色的代码是通过微信截图得到颜色的RGB值,然后去网上找对应的代码

PS:如果修改代码的话一定不要忘了写“+”,这里的xlim和下一段的我都是后加上去的,就忘了写,结果输出来好多奇形怪状的结果。

3、改变轴的显示样式(不显示图标、刻度、轴的名字)

h <- ggplot(crop,aes(x=ph,fill=label,col=label))+ #ph的密度曲线
  geom_density(alpha=.35)+xlim(2,12)+ #密度图透明度设置为0.35,x轴范围为2—12,如果是填程序上去别忘了写“+”
  theme(legend.position = 'none')+ #不显示图例#,axis.ticks = element_blank(),axis.text = element_blank()后边这一部分是不显示坐标轴文字和刻度
  xlab(NULL) #轴的标签不显示

i <- ggplot(crop,aes(x=temperature,fill=label,col=label))+
  geom_density(alpha=.35)+
  theme(legend.position = 'none')+
  coord_flip()+xlab(NULL) #颠倒坐标轴

经过多次试验,如果我想让图 g 和图 h 的横轴对齐、图 g 和图 i 的纵轴对齐,我只好让图 h 的纵轴的名称、图 i 的横轴的名称及坐标轴刻度和数字都显示出来才行。

而且对于图 i ,最开始x轴是温度、y轴是密度,对调轴之后X是密度、Y是温度。我不想让温度显示出来,但是还是要写成X。在这想到了一句小品台词:“你大爷永远是你大爷”。

输出图4、5

图4

 图5

 4、设置合适的比例和留白

要试着做的图1 只有三个部分有图,还有个部分是空白的。按下边这个代码做即可输出带有留白的图片

plot_grid(h,NULL,g,i,nrow=2,byrow=T,rel_widths = c(4,1),rel_heights = c(1,3)) 
#rel_widths:左图与右图的宽度比,rel_heights:上图与下图的高度比

输出效果如图6

  图6

可能这是今天最有成就感的结果啦!还是要坚持不懈地尝试下去呀!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值