R语言-ggplot初级
ggplot2简介:
在2005年开始出现,吸取了基础绘图系统和lattice绘图系统的优点,并利用一个强大的模型来对其进行改进,这一模型基于之前所述的一系列准则,
能够创建任意类型的统计图形
1.导入包
library(maps)
library(maptools)
library(rgdal)
library(plyr)
library(MASS)
library(dplyr)
library(ggplot2)
案例1:钻石数据集
采用ggplot2自带的钻石数据集.
数据集变量简介
## 主要变量
## price 价格
## color 颜色
## carat 重量
## cut 切工
1.1 使用qplot进行简单的快速作图
set.seed(123)
# 从整个数据集取出100行进行分析
dsmall <- diamonds[sample(nrow(diamonds), 100), ]
dim(dsmall) # 1.1.1根据x和y和数据集自动作图
qplot(carat, price, data = diamonds) # 1.1.2根据log x和log y和数据集,自动作图
qplot(log(carat), log(price), data = diamonds) # 1.1.3根据x和y和数据集按照color进行分类,自动作图
qplot(carat, price, data = dsmall, colour = color) # 1.1.4根据x和y和数据集按照shape进行分类,自动作图
qplot(carat, price, data = dsmall, shape = cut) # 1.1.5根据x和y和数据集,指定作图的类型,自动作图
qplot(carat, price, data = dsmall, geom = c("point", "smooth")) # 1.1.6根据x和y和数据集,做箱线图
qplot(cut, price / carat, data = diamonds, geom = "boxplot") # 1.1.7根据x和y和数据集,做条形图
qplot(color, data = diamonds, geom = "bar") # 1.1.8根据x和y和数据集,做直方图
qplot(carat, data = diamonds, geom = "histogram") # 1.1.9根据x和y和数据集,做核密度图
qplot(carat, data = diamonds, geom = "density")
图 1.1.1 图 1.1.2 图 1.1.3
图 1.1.4 图 1.1.5 图 1.1.6
图 1.1.7 图 1.1.8 图1.1.9
1.2使用qplot进行分组
# 1.1.10 使用facets对需要分组的字段进行分组
qplot(carat, data = diamonds, facets = color ~ .,
geom = "histogram", binwidth = 0.1, xlim = c(0, 3)) # 1.1.11 给图形添加信息
qplot(
carat, price, data = dsmall,
xlab = "Price ($)", ylab = "Weight (carats)",
main = "Price-weight relationship"
)
图 1.1.10 按照不同的颜色对重量进行统计 图 1.1.11 添加和标题,X轴,Y轴解释
案例2:地图(不包含中国)
ggplot是基于图层进行作图的
df <- data.frame(x = rnorm(2000), y = rnorm(2000))
norm <- ggplot(df, aes(x, y))
norm # 图层1
norm + geom_point() # 图层2
# 改变点的大小和形状
norm + geom_point(shape = 1)
norm + geom_point(shape = ".")
图层 1 图层 2 图层3
采用ggplot2自带的美国城市数据集us.city
数据集变量简介
## name 城市名称
## country.etc 简称
## pop 人口数量
## lat 纬度
## lon 经度
## capital 是否是首府
2.1找出美国人口大于500000的城市
big_cities <- subset(us.cities, pop > 500000)
qplot(long, lat, data = big_cities) + borders("state", size = 0.5)
图 2.1
2.2 做出德州地图
tx_cities <- subset(us.cities, country.etc == "TX")
# 在使用map做地图的时候,记住x和y一定指的是经纬度
ggplot(tx_cities, aes(long, lat)) +
borders("county", "texas", colour = "grey70") +
geom_point(colour = alpha("black", 0.5))
图 2.2 德州地图
2.3结合USAssert来做出美国各个州的犯罪率
# 从map中获取洲数据
states <- map_data("state")
# 获取犯罪数据
arrests <- USArrests
# 将犯罪的数据列名转换为小写
names(arrests) <- tolower(names(arrests))
# 获取根据行名获取区域数据
arrests$region <- tolower(rownames(USArrests))
# 将两个数据集进行合并
choro <- merge(states, arrests, by = "region")
# 按犯罪率升序排列
choro <- choro[order(choro$order), ]
# 2.3.1 犯罪率的分布
qplot(long, lat, data = choro, group = group,fill = assault, geom = "polygon")
# 2.3.2 谋杀率的分布
qplot(long, lat, data = choro, group = group,
fill = assault / murder, geom = "polygon")
图 2.3.1 结论:越往东北犯罪率越低 图 2.3.2 结论:越往西北谋杀率越低
案例3:中国地图
3.1 做出各个省份人口的数量
# 载入中国地图数据集
china=readShapePoly('E:\\Udacity\\Data Analysis High\\R\\R_Study\\第一天数据\\bou2_4p.shp')
# 获取数据
x<-china@data
# 转换为datafarme
xs<-data.frame(x,id=seq(0:924)-1)
# 将china转换为datafarme
shapefile_df <- fortify(china)
# 组合成完整的dataframe
china_mapdata<-join(shapefile_df, xs, type = "full")
# 省份名称
NAME<-c("北京市","天津市","河北省","山西省","内蒙古自治区","辽宁省","吉林省",
"黑龙江省","上海市","江苏省","浙江省","安徽省","福建省", "江西省","山东省","河南省",
"湖北省", "湖南省","广东省", "广西壮族自治区","海南省", "重庆市","四川省", "贵州省",
"云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区",
"台湾省","香港特别行政区")
# 各个省份的人口
pop<-c(7355291,3963604,20813492,10654162,8470472,15334912,9162183,13192935,8893483,25635291,20060115,19322432,11971873,11847841,30794664,26404973,
17253385,19029894,32222752,13467663,2451819,10272559,26383458,10745630,
12695396,689521,11084516,7113833,1586635,1945064,6902850,23193638,7026400)
# 组合成完整的d人口-省份的dataframe
pop<-data.frame(NAME,pop)
# 和中国的地图信息相结合,组合成datdaframe
china_pop<-join(china_mapdata, pop, type = "full") ggplot(china_pop, aes(x = long, y = lat, group = group,fill=pop))+
geom_polygon( )+
geom_path(colour = "grey40")
图3.1 结论颜色越浅的的省份人口越多
3.2 做出上海市的地图
# 使用subset来取出上海市的信息
SH<-subset(china_mapdata,NAME=="上海市") ggplot(SH, aes(x = long, y = lat, group = group,fill=NAME))+
geom_polygon(fill="lightblue" )+
geom_path(colour = "grey40")+
ggtitle("中华人民共和国上海市")+
annotate("text",x=121.4,y=31.15,label="上海市")
图 3.2
案例4:时间数据
采用ggplot2自带的economics数据集
数据集变量简介
## date 时间
## pop 人口
## uempmed 失业率
## unemploy 失业人数
4.1 通过时间查看失业率
ggplot(aes(x=date,y=uempmed),data=economics)+
geom_line()
图4.1 图层1
4.2查看不同政党执政时期的失业率
# 获取失业率的折线图 图层1
(unemp <- qplot(date, unemploy, data=economics, geom="line",xlab = "", ylab = "No. unemployed (1000s)")) # 由于是1970年开始,所以去掉前三行,从尼克松开始统计
presidential1 <- presidential[-(1:3), ] #确定x和y的边界
yrng <- range(economics$unemploy)
xrng <- range(economics$date) # 图层2
unemp + geom_vline(aes(xintercept = start), data = presidential) # 图层3
unemp + geom_rect(aes(NULL, NULL, xmin = start, xmax = end,
fill = party), ymin = yrng[1], ymax = yrng[2],
data = presidential1) + scale_fill_manual(values =
alpha(c("blue", "red"), 0.2))
4.2 图层2 图层 3
5.作图其他设置
5.1 叠加多个图形
# 美国5大湖之一的休伦湖数据集
huron <- data.frame(year = 1875:1972, level = LakeHuron)
ggplot(huron, aes(year)) +
geom_line(aes(y = level - 5), colour = "blue") +
geom_line(aes(y = level ), colour = "black") +
geom_line(aes(y = level + 5), colour = "red")
图5.1
5.2 颜色设置
# 使用mtcars数据集
# 制定乐填充色red和边框色black
ggplot(birthwt, aes(x=bwt)) + geom_histogram(fill="red", colour="black")
# 将cyl转变为因子
mtcars$cyl <- factor(mtcars$cyl)
# 对不同的ctl进行绘图
ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point()
图 5.2.1 图 5.2.2
5.3 图例
# 采用的是植物数据集
p <- ggplot(PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot()
# 5.3.1 默认的图例放在右边
p
# 5.3.2 不使用图例
p + guides(fill=FALSE)
# 5.3.3 将图例放在顶部
p + theme(legend.position="top")
# 5.3.4 指定图例的位置
p + theme(legend.position=c(1,0), legend.justification=c(1,0))
图 5.3.1 图 5.3.2
图 5.3.3 图 5.4.4
github:https://github.com/Mounment/R-Project
R语言-ggplot初级的更多相关文章
- 【转】R语言知识体系概览
摘要:R语言的知识体系并非语法这么简单,如果都不了R的全貌,何谈学好R语言呢.本文将展示介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言. 最近遇到很多的程序员都想转行到数据分析,于是就开 ...
- R语言扩展包dplyr笔记
引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...
- R语言——七月
这两个月没有写什么代码.也没做什么大项目,基本就是对以前写的那个用ggplot2可视化数据的项目做一些增增补补,大部分技术难关都在ggplot2和R语言EXCEL处理这里解决并总结了.然后业余帮人修改 ...
- 如何在R语言中使用Logistic回归模型
在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...
- 数据分析和R语言的那点事儿_1
最近遇到一些程序员同学向我了解R语言,有些更是想转行做数据分析,故开始学习R或者Python之类的语言.在有其他编程语言的背景下,学习R的语法的确是一件十分简单的事.霸特,如果以为仅仅是这样的话那就图 ...
- R语言-简单线性回归图-方法
目标:利用R语言统计描绘50组实验对比结果 第一步:导入.csv文件 X <- read.table("D:abc11.csv",header = TRUE, sep = & ...
- R语言绘图高质量输出
R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染.在ggplot2 ...
- R语言书籍的学习路线图
现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...
- R语言实战读书笔记(三)图形初阶
这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...
随机推荐
- #Python3.6.2(32位) pip安装 和 pygame 环境配置
#首先确认电脑已经安装python ,可通过在命令行下 执行 python --version确认. 1. 到 https://pypi.python.org/pypi/setuptools/ 下载 ...
- [css 揭秘]:CSS揭秘 技巧(一):半透明边框
我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在上面哦 喜欢的给我一个星吧 半透明边框 css 中的半透明颜色,比如用 rgba() 和 h ...
- android中与SQLite数据库相关的类
为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...
- Spring之事务管理的好处
在以往的JDBCTemplate中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中.Spring容器集成了TransactionTemplate,封装了所有对事务处理的功能 ...
- 【Spring系列】spring mvc整合任务调度
一.在dispatcher-servlet.xml中增加定时任务扫描路径和其余配置信息 xmlns:task="http://www.springframework.org/schema/t ...
- linux cenots7安装mysql
1.下载mysql 下载的话先确认好版本. system:centos7 mysql:5.7 下面的版本自己选择,一般是86位的. 下载好的文件 2.上传到服务器 soft文件夹,终端也进入了 ...
- JAVA_SE基础——48.多态
面向对象程序设计的三个特点是封装.继承和多态.前面已经学习了前两个特点.本章节将介绍多态性. 多态:一个对象具备多种形态.(父类的引用类型变量指向了子类的对象)或者是接口 的引用类型变量指向了接口实现 ...
- 九、Python发送QQ邮件(SMTP)
看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...
- 关于读取Sql Server数据库时间前端处理问题
var time = this.CreateTime; this.CreateTime = new Date(time.replace("T", " ")).F ...
- LeetCode题型分类及索引
目录 这是一个对LeetCode题目归类的索引,分类标准参考了July大神的<编程之法>以及LeetCode的tag项.分类可能还不太合理,逐步完善,请见谅~ 题主本人也在一点一点的刷题, ...