安装: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),还可以增加坐标,标题,图例

  1. labelled <- base +

  2. labs(

  3. x = "City mileage/gallon",  ##x轴

  4. y = "Highway mileage/gallon",  ##y轴

  5. colour = "Cylinders",   ##图例

  6. title = "Highway and city mileage are highly correlated"。##标题

  7. )

 

xlim()和 ylim() 可用来限制横轴或纵轴的宽度/量程/范围/最大值最小值等

分面(Facetting)

分面有两种主要类型:网格(grid)和包装(wrapped)。相较而言,Wrapped更常用。

使用方法是添加 facet_wrap()函数,参数写法是 ~+变量,例如:

  1. ggplot(mpg, aes(displ, hwy)) +

  2.  geom_point() +

  3.  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、

  1. pdf("output.pdf", width = 6, height = 6)

  2. ggplot(mpg, aes(displ, cty)) + geom_point()

  3. dev.off()

2、

  1. myplot <- ggplot(mpg, aes(displ, cty)) + geom_point()

  2. 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的更多相关文章

  1. ggplot绘图学习笔记

    0.查看R的系统帮助文档 标度 scale breaks, labels, limits, labs dose <- c(20, 30, 40, 45,60) drugA <- c(16, ...

  2. How To Use ggplot in ggplot2?

    1.What is ggplot2 ggplot2基本要素 数据(Data)和映射(Mapping) 几何对象(Geometric) 标尺(Scale) 统计变换(Statistics) 坐标系统(C ...

  3. R语言-ggplot初级

    ggplot2简介: 在2005年开始出现,吸取了基础绘图系统和lattice绘图系统的优点,并利用一个强大的模型来对其进行改进,这一模型基于之前所述的一系列准则, 能够创建任意类型的统计图形 1.导 ...

  4. ggplot的boxplot添加显著性 | Add P-values and Significance Levels to ggplots | 方差分析

    参考:Add P-values and Significance Levels toggplots 多组比较,挑选感兴趣的显示显著性. data("ToothGrowth") he ...

  5. ggplot ggplot2 画图

    折线图-ggplot2  http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.c ...

  6. ggplot饼图

    目录: 原始图样 如何去除饼图中心的杂点 如何去除饼图旁边的标签 如何去掉左上角多出来的一横线 如何去掉图例的标题,并将图例放到上面 如何对图例的标签加上百分比 如何让饼图的小块按顺时针从大到小的顺序 ...

  7. R笔记4:ggplot绘制商务图表--玫瑰图

    我们说Excel有难度的图表,可以考虑ggplot2是否更方便,本帖的例子就是用ggplot做玫瑰图. Excel做玫瑰图有一定难度,可以使用雷达图或圆环图来构建,我的博客上曾有多个帖子讨论这个,见 ...

  8. ggplot map

    ggplot {ggplot2} R Documentation Create a new ggplot Description ggplot() initializes a ggplot objec ...

  9. 数据分析python应用到的ggplot(二)

    还是优达学院的第七课 数据:https://s3.amazonaws.com/content.udacity-data.com/courses/ud359/hr_by_team_year_sf_la. ...

随机推荐

  1. CocosCreator的ToggleGroup组件使用

    用了CocosCreator也有一段时间,对ToggleGroup始终没有仔细的学习过,只停留在用过的水平.所以因为认识有限,所以以为ToggleGroup对自定义支持得没那么好,这两天因为项目,再学 ...

  2. 2019微信浏览器跳转外部浏览器下载app打开任意站实现方法

    很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接和下载APP,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 方案实现教程: 功能目的 生成微 ...

  3. Unity 利用UGUI打包图集,动态加载sprite资源

    今天做了一个UI界面,这个界面是好友界面,该界面上有若干个好友item. 需要对每个tem的头像对象(image)动态显示对应的头像.尝试利用UGUI的图集来加载,具体实现如下: 1.首先,需要知道S ...

  4. Python学习笔记(Ⅱ)——循环/选择/函数

    一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...

  5. python 科学计算及数据可视化

    第一步:利用python,画散点图. 第二步:需要用到的库有numpy,matplotlib的子库matplotlib.pyplot numpy(Numerical Python extensions ...

  6. vue中路由跳转的底层原理

    前端路由是直接找到与地址匹配的一个组件或对象并将其渲染出来.改变浏览器地址而不向服务器发出请求有两种方式: 1. 在地址中加入#以欺骗浏览器,地址的改变是由于正在进行页内导航 2. 使用H5的wind ...

  7. leetcode 1——两数之和

    问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...

  8. java微信公众号支付示例

    开始之前,先准备好:appid.商家号.商户密匙. 工具类: MD5Util.java package com.yiexpress.core.utils.wechat; import java.sec ...

  9. MapReduce编程模型简介和总结

    MapReduce应用广泛的原因之一就是其易用性,提供了一个高度抽象化而变得非常简单的编程模型,它是在总结大量应用的共同特点的基础上抽象出来的分布式计算框架,在其编程模型中,任务可以被分解成相互独立的 ...

  10. Exp1 PC平台逆向破解 20164303 景圣

    逆向及Bof基础实验 实验对象 文件名为pwn1的linux可执行文件. 实验目标:程序正常执行流程weimain调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段 ...