R语言可视化作图笔记(1)R语言ggplot2与plotly的基本介绍

R语言ggplot2与plotly的基本介绍

ggplot2

以R包自带的数据mpg为例

library(ggplot2)
data0 <- mpg

ggplot(data = data0,mapping = aes(x=displ))+
  geom_density()                # 密度图

## 另一种形式
# ggplot()+geom_density(data = data0,mapping = aes(x=displ))

这里ggplot提供整张图最下面的图层,并包含了一个名叫data0的参数data(data.frame类型)。函数aes象征的映射参数mapping,其作用是将data按照使用者的设置映射到当前的图层上,即要如何显示数据。
函数geom_density是第二个图层,如果此函数中不输入新的datamapping,则此图层的相关输入都继承自底层。这里我们将data0$displ(可简写为displ)作为密度图的x显示出来,图如下:
在这里插入图片描述
为了美观,我们也可以作其他修改。这里的fill(图像颜色),color(线颜色),size(线粗细)是对于geom_density绘图属性的修改,不是数据的映射属性,固写在aes外面。

ggplot(data = data0)+
  geom_density(aes(x=displ),fill="cornsilk", color="grey60", size=1.2)

在这里插入图片描述
如果我们想要在原有图上继续添加新的图层,可以继续用+连接图层。这里我们加入含有data1的散点图geom_point,由于输入了新的datamapping,所以不再使用之前的参数。

data1 <- data.frame(x = c(1,4,6),y = c(0.1,0.03,0.02))
#   x    y
# 1 1 0.01
# 2 4 0.03
# 3 6 0.02
ggplot(data = data0)+
  geom_density(aes(x=displ),fill="cornsilk", colour="grey60", size=1.2)+
  geom_point(data = data1,aes(x=x,y=y))

在这里插入图片描述
当我们要展示多幅图时,可以用到gridExtra::arrangeGrob以及ggplot2::aes_string。借助lapply,生成不同x的密度图
(arrangeGrob会自动排图)

library(gridExtra)
colnames <- colnames(mpg)[c(3,8,9)]
f <- function(colname){
  ggplot(mpg, aes_string(x=colname))+
    geom_density(fill="cornsilk", color="grey40", size=.3)
}
plot(arrangeGrob(grobs=lapply(colnames, f)))

在这里插入图片描述
下面来画散点图。这里的colordata所要映射的属性之一,写在aes里。ggtitle,scale_x_continuous等是设置坐标的函数,是最上端的图层。根据需要,中间可以为x,y,color,fillshape等,后面为discretecontinuousmanual等。

p <- ggplot(mpg, aes(x=displ, y=hwy,color = cyl)) +
  geom_point() +
  ggtitle("Figure: mpg") +
  scale_x_continuous(name ="x.displ") +
  scale_y_continuous(name = "y.hwy") +
  scale_colour_continuous(name = "cl.cyl")

在这里插入图片描述

plotly

最后我们试着用plotly作图。一种方法是直接用函数plotly::ggplotlyggplot2图转化为plotly图。

library(plotly)
ggplotly(p)

另一种方法是依照plotly提供的绘图思路Data-plot pipeline,其特点是用%>%来连接数据,图层(绘图),坐标等,类似于+之于ggplotadd_trace是通用的加图方式,type是需要的图片类型,symbol是点的形状,亦可用特殊化的add_markers替换。

pp <- plot_ly(x = ~mpg$displ, type = "histogram")
add_markers(pp, x= ~c(1,3,5), y=~c(10,20,30), 
            symbol= I(4)) %>%
add_trace(pp, x= ~c(2,4,6), y=~c(10,20,30), 
          type = "scatter", symbol= I(5), 
          mode="markers") %>%
  layout( title="Histogram", xaxis = list(title = "x.displ"), 
          yaxis=list(title= "y"))

在这里插入图片描述

其他

笔者没怎么用过Photoshop,但玩过RPG maker,用地图编辑器的解释ggplot2的绘图思路就是:

  • ggplot提供一张地图的地面
  • geom_XXX提供了地图上的河流,树木分布,山势地形
  • layout是地图天上飞的云

【hhh 仅供参考】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值