R语言可视化---介绍一些强大的画图和数据处理包及函数(ggplot,melt())

       最近实习中需要R语言做分析,对于最后的结果需要用如下所示的图进行展示(示例图片在论文中截取)


     R语言可视化---介绍一些强大的画图和数据处理包及函数(ggplot,melt())_第1张图片

    由于接触R语言不久,刚开始就是各种懵,认为直接用R是画不出这样的图片的,然后问了同学说用R语言的ggplot2扩展包,于是在网上找了一些教程发现这种图是可以画,但是其输入数据的形式跟我已有数据的形式有很大区别,楼主的数据是如下图形式的(只是一个例子说明,非原数据)


楼主的数据中行和列的标题分别是在实验的两个阶段用的不同的model, 其中对应的值是使用其对应行列的model组合后得到的实验结果值。而网上的教程多是标准的数据集合,如一些属性及其对应值。这样的教程推荐http://www.thebigdata.cn/JiShuBoKe/14326.html点击打开链接。搜索多个教程没有找到针对我的这种数据的解决方案,只好做了一件很愚蠢的事,将我的数据铺开再合并成所需的数据,倒是也画出了想要的结果,然而却十分麻烦,随后又找了一位熟悉R的同学咨询,人家一句代码就解决了我一大堆展开合并的工作,就是用的melt函数,代码如下


plotData <- read.csv(file="~/Desktop/A2fscore.csv")
head(plotData)
class(plotData)
library(reshape2)
library(ggplot2)
plotData <- melt(plotData,id.vars = 1)
p <- ggplot(data=plotData,aes(x=variable,y = value,fill=X))+geom_bar(stat="identity",position='dodge')+ggtitle("Fscores for A2Benchmark")+mycolour_3
p
着重介绍一下这里的melt()函数,函数在reshape2包中。我们这里需要melt的是数据框,在R的帮助文档中查找的解释是

Melt a data frame into form suitable for easy casting  将数据框融(拆解,分解)成适合转换的形式(就是我之前做的一堆愚蠢的工作)

感觉Help语言中帮助文档说的还是挺抽象的。根据我在网上查找的资料可以简单地理解为根据待melt数据的各维度名称进行排列组合将对应的值线性化,如一个2*2的矩阵,经过melt之后效果如下


对于dataframe的melt()稍微复杂一些

其中id.vars参数原dataframe中哪个变量将作为标识符,每个标识符变量占一列,与之对应的参数是measured.vars ,不指定的情况下,除了被指定为id.vars之外的都是变量都是观测值,观测变量的名称和值分别占一列,表示为结果中的variable和value变量。

        经过melt的数据即可以调用ggplot进行画图,其中用于将不同类别分开的函数是position =’dodge‘

        总体还是觉得使用数据框的melt有点绕,后来思考一下对于我的数据可以直接利用as.matrix()将数据转化为矩阵,然后进行矩阵的melt,这样比较好理解。而我这里按dataframe处理其实是因为我写数据的时候出了点小问题,将数据写入csv时,添加了列名,导致读进来的数据,列名也成为measured 的一部分,弄巧成拙,反而用数据框处理比较便利。

      差不多整理到这里,写下来比较不容易忘,希望也对大家有点帮助~

你可能感兴趣的:(数据分析)