R语言作图之ggplot2初识(1)
使用ggplot2进行作图
相比于R的内置函数plot,qplot具有的优势是能够绘制动态的图,进行储存
例如我们可以这样对qplot进行操作
bar1=qplot(foo,bar)
bar1##出的是结果图
bar1=plot(foo,bar)###但是如果直接对plot的结果进行赋值的时候,其可以直接画图,但是bar1 值不存在
使用ggplot2进行作图
1.首先从geom_point()进行学习,这个小函数是添加点,其常见的参数有
x 传入的数据x值
y 传入的数据y值
alpha 点的透明度
colour 点的颜色
fill 点的颜色填充
group 分组,美学映射
shape 点的形状
size点的大小
stroke对于shape 有边界的点,可通过stroke对边界外的进行展示着色
na.rm 参数 是否移除NA值(当na.rm=FALSE时,移除NA值时将警告,否则不)
geom_point()函数的使用
??geom_pointp <- ggplot(mtcars, aes(wt, mpg))#建立一个空白画板
p + geom_point()####添加点
# Add aesthetic mappings
View(mtcars)
p + geom_point(aes(colour = factor(cyl)))###美学映射,点的颜色以cy1的因子数进行赋值
p + geom_point(aes(size = qsec))# A "bubblechart":点的大小按照qsec的值进行画图
p + geom_point(aes(shape = factor(cyl),colour = factor(cyl),size = qsec),alpha=0.8)###美学映射,点的形状根据cy1的因子水平进行分类,点的颜色以cy1的因子数进行赋值,点的大小按照qsec进行画图,alpha 设置点的透明度结果图1
结果图1
# For shapes that have a border (like 21), you can colour the inside and outside separately. Use the stroke aesthetic to modify the width of the border对于形状有边界的点,可以通过stroke对边界外的延伸部分进行展示着色ggplot(mtcars, aes(wt, mpg)) +geom_point(shape = 21, colour = "black", fill = "white", size = 5, stroke = 3)见图2
图2
根据ggplot2对图层的多层叠加,可以分层惊喜修改点的颜色和形状
# You can create interesting shapes by layering multiple points of
# different sizes
eg:
p <- ggplot(mtcars, aes(mpg, wt, shape = factor(cyl)))##设置点的形状根据cyl进行变化,此处的图层1的shape 对后面的图层点的形状有影响
p + geom_point(aes(colour = factor(cyl)), size = 4)##图3eg:
p <- ggplot(mtcars, aes(mpg, wt, shape = factor(cyl)))
p + geom_point(aes(colour = factor(cyl)), size = 4) +geom_point(colour = "grey90", size = 1.5)###图层2 的点颜色为grey90,实际上是白色,大小为1.5,实际上是把图层1的点空心化,去掉大小1.5的有色点,见图4eg:
p <- ggplot(mtcars, aes(mpg, wt, shape = factor(cyl))##创建空白图层
p + geom_point(colour = "black", size = 4.5) + ##黑色4.5的点geom_point(colour = "pink", size = 4) + ##图层2 点粉色,大小为4,盖住了图层一的部分geom_point(aes(shape = factor(cyl)))
图3
图4
关于geom_point()中na.rm=参数,
#### geom_point warns when missing values have been dropped from the data set
#### and not plotted, you can turn this off by setting na.rm = TRUEmtcars2 <- transform(mtcars, mpg = ifelse(runif(32) < 0.2, NA, mpg)) ###此处将mtcars中通过均匀分布小于0.2的mpg行替换成NA
ggplot(mtcars2, aes(wt, mpg)) + geom_point()##在绘图的过程中,将移除NA值,并以warning 的形式告知,
ggplot(mtcars2, aes(wt, mpg)) + geom_point(na.rm = TRUE)###当使用了na.rm=TRUE 后,将直接移除数据中包含NA的值,并且不警告
关于ggplot2 中的geom_abline()函数
常见的用法
1.geom_abline() 添加非水平或者垂直线线,需要给的最少的参数是slope and intercept
geom_abline(
mapping = NULL,
data = NULL, …,
slope,
intercept,
na.rm = FALSE,
show.legend = NA
)
2.geom_hline()添加水平线
geom_hline(
mapping = NULL,
data = NULL,
…,
yintercept,
na.rm = FALSE,
show.legend = NA
)
3.geom_vline()添加垂直线
geom_vline(
mapping = NULL,
data = NULL,
…,
xintercept,
na.rm = FALSE,
show.legend = NA
)
??geom_abline##通过??geom_ 查看相应的文档
p <- ggplot(mtcars, aes(wt, mpg))
p=p+ geom_point(size=3,shape=4,color="green",na.rm=FALSE)##点的形状是4,为X 颜色为绿色
# Fixed values
p + geom_vline(xintercept = 5)####添加垂直于x轴的线,x=5 ,图5
p + geom_vline(xintercept = 1:5)##添加添加垂直于x轴的线,x=1,2,3,4,5的线,图6
p + geom_hline(yintercept = 20)###添加垂直于y轴的线,y=20 图7###添加非垂直或者水平线
p + geom_abline() # Can't see it - outside the range of the data
p + geom_abline(intercept = 20) ###图8#######计算直线最佳拟合值的斜率和截距,
coef(lm(mpg ~ wt, data = mtcars))###计算mpg和wt 的线性关系,得到截距和斜率
p + geom_abline(intercept = 37, slope = -5,col="blue",lty=4,size=0.5)###根据斜率和截距,添加趋势线,线的颜色为蓝色,线形为虚线
# But this is easier to do with geom_smooth:
p + geom_smooth(method = "lm", se = FALSE)关于分面Facet
###使用美学在不同的分面进行展示
p <- ggplot(mtcars, aes(mpg, wt)) +geom_point() +facet_wrap(~ cyl) ##图9#####按照每组cyl的平均值,添加每个分面的水平线
mean_wt <- data.frame(cyl = c(4, 6, 8), wt = c(2.28, 3.11, 4.00))
p + geom_hline(aes(yintercept = wt), mean_wt) 图10####添加水平线
ggplot(mtcars, aes(mpg, wt, colour = wt)) + ###x轴是mtcars数据中的mpg ,y轴是wt,颜色也是wtgeom_point() +geom_hline(aes(yintercept = wt, colour = wt), mean_wt) + ##加水平线,y=mean_wt,其中facet_wrap(~ cyl)###分面设置按照cyl 图11
图5
图6
图7
图8
图9
图9
图10
图11
本次学习的全部代码
qplot()作为ggplot2()的姊妹出场R=qplot(foo,bar,geom="blank")####构建一个空的画板
R=R+geom_point(size=3,shape=6,color="blue")##使用原始给的数据,作为点,点的大小为3,形状为三角形,颜色为蓝色
R=R+geom_line(color="red",linetype=2)###添加线,线形为虚线####geom_point()专场
??geom_pointp <- ggplot(mtcars, aes(wt, mpg))#建立一个空白画板
p=p + geom_point()####添加点# Add aesthetic mappings
View(mtcars)
p + geom_point(aes(colour = factor(cyl)))###美学映射,点的颜色以cy1的因子数进行赋值
p + geom_point(aes(size = qsec))# A "bubblechart":点的大小按照qsec的值进行画图
p + geom_point(aes(shape = factor(cyl),colour = factor(cyl),size = qsec),###美学映射,点的形状根据cy1的因子水平进行分类,点的颜色以cy1的因子数进行赋值,点的大小按照qsec进行画图alpha=0.5)###设置点的透明度#######点的颜色和大小
# Set aesthetics to fixed value
ggplot(mtcars, aes(wt, mpg)) + geom_point(colour = "red", size = 3)# Varying alpha is useful for large datasets
View(diamonds)
d <- ggplot(diamonds, aes(carat, price))
d + geom_point(alpha = 1/10)###对于大数据集,点的颜色透明度渐变
d + geom_point(alpha = 1/20)
d + geom_point(alpha = 1/100)##对于形状有边界的点,可以通过stroke对边界外的延伸部分进行展示着色
ggplot(mtcars, aes(wt, mpg)) +geom_point(shape = 21, colour = "black", fill = "white", size = 3, stroke = 2)###通过多图层进行设置点的属性################example1
p <- ggplot(mtcars, aes(mpg, wt, shape = factor(cyl)))##设置点的形状根据cyl进行变化,此处的图层1的shape 对后面的图层点的形状有影响
p + geom_point(aes(colour = factor(cyl)), size = 4)+ ##点的颜色根据cyl 进行变化geom_point(colour = "grey90", size = 1.5) ###图层2 的点颜色为grey90,实际上是白色,大小为1.5,实际上是把图层1的点空心化,去掉大小1.5的有色点#############example2
p + geom_point(colour = "black", size = 4.5 ) + ##黑色4.5大小的点geom_point(colour = "pink", size = 4) + ###粉色4的点geom_point(aes(shape = factor(cyl))) ##点的形状按照cyl 进行定义##########关于geom_point 中的na.rm 参数
mtcars2 <- transform(mtcars, mpg = ifelse(runif(32) < 0.2, NA, mpg)) ###此处将mtcars中通过均匀分布小于0.2的mpg行替换成NA
ggplot(mtcars2, aes(wt, mpg)) + geom_point()##在绘图的过程中,将移除NA值,并以warning 的形式告知,
ggplot(mtcars2, aes(wt, mpg)) + geom_point(na.rm = TRUE)###当使用了na.rm=TRUE 后,将直接移除数据中包含NA的值,并且不警告################geom_abline()专场
??geom_abline##通过??geom_ 查看相应的文档
p <- ggplot(mtcars, aes(wt, mpg))
p=p+ geom_point(size=3,shape=4,color="green",na.rm=FALSE)##点的形状是4,为X 颜色为绿色
# Fixed values
p + geom_vline(xintercept = 5)####添加垂直于x轴的线,x=5
p + geom_vline(xintercept = 1:5)##添加添加垂直于x轴的线,x=1,2,3,4,5的线
p + geom_hline(yintercept = 20)###添加垂直于y轴的线,y=20###添加非垂直或者水平线
p + geom_abline() # Can't see it - outside the range of the data
p + geom_abline(intercept = 20)####计算直线最佳拟合值的斜率和截距,
coef(lm(mpg ~ wt, data = mtcars))###计算mpg和wt 的线性关系,得到截距和斜率
p + geom_abline(intercept = 37, slope = -5,col="blue",lty=4,size=0.5)###根据斜率和截距,添加趋势线,线的颜色为蓝色,线形为虚线
# But this is easier to do with geom_smooth:
p + geom_smooth(method = "lm", se = FALSE)###使用美学在不同的分面进行展示
p <- ggplot(mtcars, aes(mpg, wt)) +geom_point() +facet_wrap(~ cyl)#####按照每组cyl的平均值,添加每个分面的水平线
mean_wt <- data.frame(cyl = c(4, 6, 8), wt = c(2.28, 3.11, 4.00))
p + geom_hline(aes(yintercept = wt), mean_wt)####添加水平线
ggplot(mtcars, aes(mpg, wt, colour = wt)) + ###x轴是mtcars数据中的mpg ,y轴是wt,颜色也是wtgeom_point() +geom_hline(aes(yintercept = wt, colour = wt), mean_wt) + ##加水平线,y=mean_wt,其中facet_wrap(~ cyl)###分面设置按照cyl
这个最后一个关于wt 的问题还不懂,后面还要继续学习
R语言作图之ggplot2初识(1)相关推荐
- R语言作图之ggplot2作图2
1.geom_boxplot() 箱线图 p <- ggplot(mpg, aes(class, hwy)) p + geom_boxplot() ###见图1# Orientation fol ...
- R语言数据可视化 ggplot2基础3 添加几何对象
R语言数据可视化 ggplot2基础3 添加几何对象 数据的统计变换 添加几何对象 数据的统计变换 添加几何对象 上一讲我们介绍的是如何创建散点图,这一讲我们介绍如何创建其他类型的图,以及怎么创建有多 ...
- R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介
R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介 分层语法的组成(data-stat-geom-scale-coord-facet) 用分层 ...
- R语言作图——Pie chart(饼图)
原创:黄小仙 今天要给大家介绍的Pie chart(饼图),本来是不打算写这个的,因为用Excel画饼图实在是太方便了.本着能少动一下是一下的懒人原则,是不打算用R画的,再说,本小仙不是掌握了R作图大 ...
- R语言作图——Circular bar plot(环形柱状图)
原创:黄小仙 不知不觉,距离小仙上次发文已经过去五个多月了.R语言作图系列的更新频率跟理想中的一月一次差别有点忒大了,不得不让小仙陷入深深的反思,对于时间的规划也有了一些新的感悟. 不知道大家有没有跟 ...
- R语言作图——Split violin plot
原创:黄小仙 最近小仙同学在好几篇文献里看到了这种小提琴图,暂时就肤浅地认为这是作者为了更好地比较对照组与实验组的差别,所以将同一个基因的小提琴图各画了一半,放在一起.为了跟上可视化的潮流,小仙也来尝 ...
- R语言可视化包ggplot2改变图例(legend)的标题(title)实战
R语言可视化包ggplot2改变图例(legend)的标题(title)实战 目录 R语言可视化包ggplot2改变图例(legend)的标题(title)实战
- R语言可视化包ggplot2在一张图中画出两条线实战
R语言可视化包ggplot2在一张图中画出两条线实战 目录 R语言可视化包ggplot2在一张图中画出两条线实战
- R语言可视化包ggplot2绘制分组的条形图(bar plot、柱状图)实战:多变量柱状图
R语言可视化包ggplot2绘制分组的条形图(bar plot.柱状图)实战:多变量柱状图 目录
最新文章
- forward和redirect的区别
- 银江科技企业课堂小结
- ubuntu连有线网 无法连接外网
- RC电路输出波形的时域与频域分析
- 为什么打不开_发票查重百科导出的发票台账为什么附件打不开?
- [洪流学堂]Hololens开发高级篇5:空间映射(Spatial mapping)
- php phar效率,PHP的Phar包原来性能这么强
- Spring Boot Actuator 监控和管理应用程序
- 每日学习打卡-汇总处
- java经典算法(二)---zws
- django-数据库[ 基本操作 ]
- 每周阅读精选(2013-02-18)
- 卡耐基的这100句话,畅销85年,改变了很多人
- 菜鸡解析CSS(cascading style sheet)
- Java之Stream的管道处理
- 原创超简单代码(1.19)
- DM数据库 HUGE TABLE简析
- Python:实现similarity search相似性搜索算法(附完整源码)
- Grade for Android 之二:Groovy 与Java的语法区别
- 非华为电脑如何与matepad pro进行多屏协同,以及如何处理连接失败等问题
热门文章
- 上班一族“黑话”辞典大曝光
- Linux 进程间通讯方式 pipe()函数
- php 中 map和array,浅析php中array_map和array_walk的使用对比
- 基于Python-turtle库绘制小猪佩奇、小猫咪
- Android查看支持硬编解码器(十五)
- Win10彻底关闭Antimalware Service Executable占用内存过高问题
- Emacs:报错:File error: Cannot open load file,cl-lib解决
- android源码灭屏时蓝牙自动配对
- Android Camera数据流分析全程记录(overlay方式一)
- ffmpeg之封装AAC