背景介绍
最近又重新把《R数据可视化手册》这本书读了一遍,又有了一些新的体会,将其中的一些重点难点,自己感觉有用且有必要总结的内容,就花了一点时间总结了下来。同时将自己总结的内容,分享给你们。有需要的可以收藏学习。
就是下面这本书,明显被我翻旧了!同时提供了当当网的购书链接,需要的可以购买!个人非常推荐阅读,就像一本工具书,书中以提问的形式进行解答,解决问题,挺不错的。
软件介绍
R、RStudio
温故而知新
1.如何从Excel中读取某个工作表
假如我们的Excel中有3个工作表,需要读取的数据在第2个工作表,该如何读取?
- 使用Excel中工作表的顺序来指定
library(openxlsx)
read.xlsx("datafile.xlsx",sheet = 2)
- 使用Excel中工作表的名称来指定
library(openxlsx)
read.xlsx("datafile.xlsx",sheet = "Sheet2")
2.如何从SPSS文件中加载数据
假如我们的数据在SPSS中,如何从中读取数据
install.packages("foreign")
library(foreign)
read.spss("datafile.sav")
3.如何使用每组两个变量进行绘图?
假如我们的横坐标需要每组两个指标绘图,如何绘图?
下图是ToothGrowth数据集,我们需要以supp和dose为分组进行绘图。
ggplot(ToothGrowth,
aes(interaction(supp,dose),len))+
geom_boxplot()
4.某个分类变量的簇状条形图如何绘制?
以下是gcookbook函数包中cabbage_exp的数据集,我们想以Date为分类,Cultivar为填充绘图如何做?
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+
geom_bar(position = "dodge",stat="identity")
如果你想调节两个柱子的距离,可以对position_dodge()和width进行参数的调节
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+
geom_bar(position = position_dodge(0.7),width=0.5,stat="identity")
这里需要强调的是使用position = "dodge",如果没有这个语法,柱子将不会分开,叠加显示,如下所示。
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+
geom_bar(stat="identity")
5.如何从一个数据集中挑选想要的数据?
比如gcookbook包中uspopchange数据集的Change列,我们只想要其中数值大于5的,如何办到?
library(gcookbook)
subset(uspopchange,Change>5)
6.绘图中图形,如何指定颜色?
在绘制具有分组的图形,包括散点图,折线图,柱状图等等,如何对几何图形指定颜色?
比如我们使用mtcars数据集,绘制出了一幅柱状图,由于我们将cyl进行因子化,因此为三种颜色。那么如何更改三种颜色呢
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+
geom_bar(stat="identity")
直接使用scale_fill_manual()函数指定颜色即可,这里注意,指定的颜色需要和分类相同。也就是factor(cyl)有三种,那么你指定三种颜色即可
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+
geom_bar(stat="identity")+
scale_fill_manual(values = c("red","blue","black"))
还有一种指定颜色的方法,我们写出函数后,将鼠标放在values=之后
点击插件Colour Picker(没有的可以使用install.packages(colourpicker)安装一下,就有了)
需要几个颜色,就选择几个颜色即可,点击Done
然后颜色数值就会自动填充进来,运行代码即可,好看的图就出来了
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+
geom_bar(stat="identity")+
scale_fill_manual(values =c("#F0FFFF", "#FF4040", "#008B8B"))
7.图例的顺序如何逆转?
当我们在图中出现图例,那么图例的顺序如何逆转?
- 使用guides()函数,进行fill=guide_legend()的设置,reverse=TRUE即可
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+
geom_bar(position = position_dodge(0.7),width=0.5,stat="identity")+
guides(fill=guide_legend(reverse=TRUE))
8.百分比堆积条形图如何绘制?
如果我们想要绘制百分比堆积条形图,该如何绘制?
首先我们需要计算百分比堆积条形图的数据,我们以cabbage_exp为例,需要计算重量的百分比堆积图
首先计算百分比的数据,这里也可以顺便学一下,如何给一个数据集增加一列数据。
library(plyr)
ce <- ddply(cabbage_exp,"Date",transform,
percent_weight=Weight/sum(Weight)*100)
ce
然后开始绘图即可
ggplot(ce,aes(Date,percent_weight,fill=Cultivar))+
geom_bar(stat="identity")
9.如何给图形增加数据标签?
想要将数据展示在图形上,怎么做呢?
首先我们构建一个data数据集,分别为横纵坐标,然后绘图,使用geom_text()进行设置即可,还可以设置字体的颜色和大小等
data <- data.frame(a=c(1:5),
b=c(2:6))
ggplot(data,aes(a,b))+
geom_bar(stat="identity")+
geom_text(aes(label=b),vjust=-0.2,size=5,colour="red")
10.如何将y轴进行log
数据相差太大,如何对数据进行log
首先使用worldpop数据集进行绘图,我们会发现数据相差太大
library(gcookbook)
ggplot(worldpop,aes(Year,Population))+
geom_line()+
geom_point()
接下来,我们对y轴取对数,再看看结果
ggplot(worldpop,aes(Year,Population))+
geom_line()+
geom_point()+
scale_y_log10()
赶紧来试试吧!