安装: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 () 可用来限制横轴或纵轴的宽度/量程/范围/最大值最小值等

    自定义坐标轴

    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"))

    scale_y_continuous(expand=c(0,1)).    比如画 曼哈顿图的时候,去掉点和X轴之间的 “gap”

    画曼哈顿图的时候, 隔一个分别给不同的颜色

    scale_color_manual(values = rep(c("grey","skyblue"),6))。        6 表示有6条染色体

    分面(Facetting)

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

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

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

    geom_point () +

    facet_wrap (~ class)

    将变量转化为因子

    如 变量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方法绘制, 拟合一个二次多项式回归。置信区间不显示。

    图例的位置

    决定放哪儿的参数是: 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_fill_discrete(name="GO_category",breaks=c("C","F","P"),labels=c("CC","MF","BP") ) 同上

    标尺(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"),   ## 坐标轴文字。字体为family

    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))

    theme(legend.title=element_blank())                                             ###不要图例标题

    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

    ggplot(data,aes(x=reorder(V1,V2),y=V2))+geom_bar(stat=identity). ###将V2列按照从大到小顺序排序后,将V1列映射到X轴;若想从小到大排列,则:

    ggplot(data,aes(x=reorder(V1,-V2),y=V2))+geom_bar(stat=identity).

    给图中添加与坐标轴平行的线

    geom_ vline(xintercept=c(-1, 1), color="gray",, linetype=2, size=0.5). 在X轴-1, 1 画虚线

    geom_ hline(xintercept=c(-1, 1), color="gray",, linetype=2, size=0.5). 在Y轴-1, 1 画虚线

    ggplot的两种保存方式

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

    path 设定图形储存路径。 ggsave() 可以生成以下格式: .eps , .pdf , .svg , .wmf , .png , .jpg , .bmp , and .tiff .

    width height 设置绝对尺寸的大小,可以精确控制尺寸

    分辨率 dpi 默认值300,你可以修改为600。

    library(ggrepel)

    add_label <- pca[which(pca$pca1 == -0.0074042),]
    p +geom_label_repel(data = add_label,aes(x=add_label$pca1, y=add_label$pca2, label="Sp"))