ggplot
安装:install.packages("ggplot2")
加载:library(ggplot2)
Plot(图)= data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象)
其中:
data: 数据集,主要是data frame;
Aesthetics: 美学映射,比如将变量映射给x,y坐标轴,或者映射给颜色、大小、形状等图形属性;
Geometry: 几何对象,比如柱形图、直方图、散点图、线图、密度图等。
在ggplot2中有两个主要绘图函数:qplot()以及ggplot()。
qplot(): 顾名思义,快速绘图;
ggplot():此函数才是ggplot2的精髓,远比qplot()强大,可以一步步绘制十分复杂的图形。
主要介绍ggplot
1、散点图
ggplot(data=df, aes(x=mpg, y=wt))+ geom_point()
改变点形状、大小、颜色等属性
ggplot(data=df, aes(x=mpg, y=wt))+geom_point(color="blue", size=2, shape=23
使用数据集mtcars, 先创建一个ggplot图层
b <- ggplot(data = mtcars, aes(x=wt, y=mpg))
b + geom_point(aes(color = factor(cyl), shape = factor(cyl)))
自定义颜色
b+geom_point(aes(color=factor(cyl), shape=factor(cyl)))+ scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme_classic()
若图例为连续性,
三类连续型颜色梯度(即渐变色)。
- scale_colour_gradient()和scale_fill_gradient():双色梯度。顺序由低到高,参数low 和high 用于控制此梯度两端颜色;scale_colour_gradient(low="blue", "red")
- scale_colour_gradient2()和scale_fill_gradient2():三色梯度。顺序为低-中-高,参数low和high 用于控制此梯度两端颜色,中点默认值是0,可以用参数midpoint 将其设置为任意值
- scale_colour_gradientn()和scale_fill_gradientn():自定义的n 色梯度。此标度需要赋给参数colours 一个颜色向量。
若为离散型,如
一种即scale_colour_hue()、cale_fill_hue();另一种scale_colour_ brewer ()、scale_fill_ brewer () ,要想了解所有的调色板,可以使用RColorBrewer::display.brewer.all()查看.
用参数palette=”调色板名称或者数字” 如scale_colour_ brewer (palette=2) 等价于scale_colour_ brewer (palette=“'YIOrBr'”)
修改坐标轴
xlab("名称") 以及ylab(“名称”)
去掉坐标轴: labs(x=Null, y=Null),还可以增加坐标,标题,图例
labelled <- base +labs(x = "City mileage/gallon", ##x轴y = "Highway mileage/gallon", ##y轴colour = "Cylinders", ##图例title = "Highway and city mileage are highly correlated"。##标题)
xlim()和 ylim() 可用来限制横轴或纵轴的宽度/量程/范围/最大值最小值等
分面(Facetting)
分面有两种主要类型:网格(grid)和包装(wrapped)。相较而言,Wrapped更常用。
使用方法是添加 facet_wrap()函数,参数写法是 ~+变量,例如:
ggplot(mpg, aes(displ, hwy)) +geom_point() +facet_wrap(~class)
ggtitle(“”)可用来添加标题
将变量转化为因子
如 变量a。 a <- factor(a, levels = c(0,1), labels=c("Automatic", "Manual")) #"Automatic", "Manual" 是在原始文本的数据
添加光滑曲线
函数geom_smooth(),4个参数:;
1⃣️method: 有lm,glm, smooth, rlm和gam;
2⃣️formula:在光滑函数中使用的公式,包括y~x(默认), y~log(x)等;
3⃣️se:绘制置信区间(TRUE/FALSE)。默认TRUE;
4⃣️level:使用的置信区间水平(默认95%);
5⃣️fullrange:指定拟合应涵盖图(TRUE), 或仅仅是数据(FALSE)。默认为FALSE。。 不太懂
例子来一波: geom_smooth(method = lm, formula = y~poly(x,2), se = FALSE). lm方法绘制, 拟合一个二次多项式回归。置信区间不显示。
自定义坐标轴
scale_y_continuous()。和scale_x_continuous(). breaks= 所显示的刻度数, labels=。刻度显示的标签, limits=控制要展示的值的范围
ggplot(data, aes(BC, YK)) + geom_point() + scale_y_continuous(breaks=c(5,10,15), labels=c("a", "b", "c"))
图例的位置
决定放哪儿的参数是: theme()中的 legend.position。
默认状态是 theme(legend.position="right")
然后我们可以通过“right”, “left”, “top”, “bottom”,把他放在上/下/左,或者去掉“none” 也可以使用具体数字
theme(legend.position=c(1,8))

改变图例的题目和标签:
p+scale_colour_hue("what does it eat?",labels=c("plants","meat","both","don't know")); # what。。为图例title, labels中的为图例text
另一种我经常用:可以改变颜色和图例 p + scale_color_manual(values=c("red","blue","yellow","black","red","green"), name = "fold", breaks=c(">2",">3",">5",">6","1","4"),labels=c("1","2","3","4","5","6")). ###values=c() 改变颜色, name=图例title,breaks 以前图例上text,labels 更改新的图例text
标尺(scale)
可以使用标尺将带有因子的水平的 视觉线索(如颜色,形状,线条,尺寸和透明度)关联起来
scale_color_manual(values=c("颜色", “颜色”))函数修改对应因子的颜色
如ggplot(data, aes(YC, BC, color=factor(fold))) + geom_point(size= 2) + scale_color_manual(values=c("orange", "olivedrab", "navy"))
此外,还可以通过scale_color_brewer(palette="颜色集合") 颜色集合(“Set2,Set3, Pastell等”),想获得更多的颜色集合可以使用:
library(RcolorBrewer)
display.brewer.all()
主题(theme)
theme()函数中的选项可以让我们调整字体、背景、颜色和网络线等。主题可以使用一次,也可以保存起来应用到多个图中。
mytheme() <- theme(plot.title = element.text(face = "bold.italic", size= "14", color= "brown"), ##plot.title 标题;element.text 修改文本; face:字体,size:大小,colosr
axis.title= axis.title=element_text(face = "italic", size = "16", color="blue"), ##axis.title. 修改横纵坐标题目
axis.text=element_text(face="bold", size = 9, color = "red"), ## 坐标轴文字
panel.background = element_rect(fill = "white", color="red"), ##panel.background 面板背景; fill:填充色;color 面板到框的颜色
panel.grid.major.y = element_line(color = "red", linetype = 1), ## 面板y轴大网格线
panel.grid.minor.y = element_line(color = "red", linetype = 1), ##面板y轴小网格线
panel.grid.minor.x = element_blank()), ##面板x轴小网格线,,为空
legend.position = "top") ##图例的位置,“right”, “left”, “top”, “bottom”,把他放在上/下/左,或者去掉“none” 也可以使用具体数字
theme(legend.position=c(1,8))
ggplot(data, aes(YC, BC, color=factor(fold))) + geom_point(size= 2) + scale_color_brewer(palette="Set2") + labs(title="This is title") + scale_y_continuous(breaks=c(5,10,15,20), labels=c("oen","two", "three","four")) + mytheme
形成的图

多重图
利用gridExtr包中的grid.arrange()函数,将几个图形合并为一个
如有p1, p2, p3图形
library(gridExtra)
grid.arrange(p1,p2,p3, ncol=3)。以列的形式
ggplot的两种保存方式
1、
pdf("output.pdf", width = 6, height = 6)ggplot(mpg, aes(displ, cty)) + geom_point()dev.off()
2、
myplot <- ggplot(mpg, aes(displ, cty)) + geom_point()ggsave(file = "mygrafh.png", plot = myplot, width =5, height =4) ##在当前路径下将myplot保存名为mygrafh.png的5英寸✖️4英寸PNG格式图片。
显然第二种方法更加方便简洁,不过我们需要设置以下参数:
path设定图形储存路径。ggsave()可以生成以下格式:.eps,.pdf,.svg,.wmf,.png,.jpg,.bmp, and.tiff.width和height设置绝对尺寸的大小,可以精确控制尺寸分辨率
dpi默认值300,你可以修改为600。
ggplot的更多相关文章
- ggplot绘图学习笔记
0.查看R的系统帮助文档 标度 scale breaks, labels, limits, labs dose <- c(20, 30, 40, 45,60) drugA <- c(16, ...
- How To Use ggplot in ggplot2?
1.What is ggplot2 ggplot2基本要素 数据(Data)和映射(Mapping) 几何对象(Geometric) 标尺(Scale) 统计变换(Statistics) 坐标系统(C ...
- R语言-ggplot初级
ggplot2简介: 在2005年开始出现,吸取了基础绘图系统和lattice绘图系统的优点,并利用一个强大的模型来对其进行改进,这一模型基于之前所述的一系列准则, 能够创建任意类型的统计图形 1.导 ...
- ggplot的boxplot添加显著性 | Add P-values and Significance Levels to ggplots | 方差分析
参考:Add P-values and Significance Levels toggplots 多组比较,挑选感兴趣的显示显著性. data("ToothGrowth") he ...
- ggplot ggplot2 画图
折线图-ggplot2 http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.c ...
- ggplot饼图
目录: 原始图样 如何去除饼图中心的杂点 如何去除饼图旁边的标签 如何去掉左上角多出来的一横线 如何去掉图例的标题,并将图例放到上面 如何对图例的标签加上百分比 如何让饼图的小块按顺时针从大到小的顺序 ...
- R笔记4:ggplot绘制商务图表--玫瑰图
我们说Excel有难度的图表,可以考虑ggplot2是否更方便,本帖的例子就是用ggplot做玫瑰图. Excel做玫瑰图有一定难度,可以使用雷达图或圆环图来构建,我的博客上曾有多个帖子讨论这个,见 ...
- ggplot map
ggplot {ggplot2} R Documentation Create a new ggplot Description ggplot() initializes a ggplot objec ...
- 数据分析python应用到的ggplot(二)
还是优达学院的第七课 数据:https://s3.amazonaws.com/content.udacity-data.com/courses/ud359/hr_by_team_year_sf_la. ...
随机推荐
- PyTorch常用代码段整理合集
PyTorch常用代码段整理合集 转自:知乎 作者:张皓 众所周知,程序猿在写代码时通常会在网上搜索大量资料,其中大部分是代码段.然而,这项工作常常令人心累身疲,耗费大量时间.所以,今天小编转载了知乎 ...
- PHP----------PHP自身的性能优化注意事项
1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row[’id’] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用ech ...
- C# Unity的使用
Unity是微软推出的IOC框架, 使用这个框架,可以实现AOP面向切面编程,便于代码的后期维护,此外,这套框架还自带单例模式,可以提高程序的运行效率. 下面是我自己的案例,以供日后参考: 使用VS2 ...
- qemu创建vm和vcpu进入kvm的流程
kvm是一个内核模块,它实现了一个/dev/kvm的字符设备来与用户进行交互,通过调用一系列ioctl函数可以实现qemu和kvm之间的切换. 1.qemu发起KVM_CREATE_VM的ioctl创 ...
- ODI基于源表时间戳字段获取增量数据
实现目标:通过ODI获取一个没有时间戳的子表(qb_bw)的增量数据,而主表(qb_tb)有一个rksj入库时间,且主表和子表之间通过ID关联.目标表名是qb_bw1. 设计原理:通过在ODI的map ...
- 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},将二丫替换为王小丫, 写入到"D:\\stuinfo.txt"
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...
- First Python script
learn what is api Jailbreak pycharm install requests on pycharm write first request: get, post MFA l ...
- IDEA日常遇到问题汇总
1. IDEA .gitignore文件不显示在项目栏中 解决方法,setting >> Editor >> Code Style >> File Type &g ...
- 硬件笔记之MacMini开启HiDPI
0x00 概述 先科普一下,有关retina和HiDPI那点事 ,Macmini在2k显示器的显示太小了,看起来费眼,没办法,苹果原生HiDPI是支持4k显示器的,所以以后买显示器,直接买4k的一步到 ...
- Hibernate的Cascade——级联操作
在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...