ggplot2|详解八大基本绘图要素(二)

简介: ggplot2|详解八大基本绘图要素(二)

本文首发于“生信补给站”公众号 https://mp.weixin.qq.com/s/UMuZ1MiuKDheHk9mwA9EXA

四、标尺(Scale)

在对图形属性进行映射之后,使用标尺可以控制这些属性的显示方式,比如坐标刻度,颜色属性等。

ggplot2的scale系列函数有很多,命名和用法是有一定规律的。一般使用三个单词用_连接,如scale_fill_gradient和 scale_x_continuous,

  • 第一个都是scale
  • 第二个是color fill x y linetype shape size等可更改的参数
  • 第三个是具体的类型

此处仅介绍颜色设置坐标轴设置函数的一些用法,其他类似。


1 颜色标尺设置(color fill)

1.1 颜色标尺“第二个”单词选择方法

颜色的函数名第二个单词有color和fill两个,对应分组使用的颜色函数即可。

比如柱状图,fill是柱子的填充颜色,这时就使用scale_fill系列函数来更改颜色。

比如点图使用color分组,则使用scale_color_系列函数来更改颜色。


1.2 颜色标尺“第三个”单词选择方法

根据第三个单词的不同,更换的颜色分为以下几种

1)离散型:在颜色变量是离散变量的时候使用,比如分类时每一类对应一种颜色

  • manual 直接指定分组使用的颜色
  • hue 通过改变色相(hue)饱和度(chroma)亮度(luminosity)来调整颜色
  • brewer 使用ColorBrewer的颜色
  • grey 使用不同程度的灰色

2)连续型:颜色变量是连续变量的时候使用,比如0-100的数,数值越大颜色越深这样

  • gradient 创建渐变色
  • distiller 使用ColorBrewer的颜色
  • identity 使用color变量对应的颜色,对离散型和连续型都有效


1.3 更改离散型变量的颜色函数

#数据,映射以及几何对象

p <- ggplot(diamond, aes(color))+geom_bar(aes(fill=cut)) #左上

manual 直接指定分组使用的颜色

#values参数指定颜色
#直接指定颜色 (右上)
p + scale_fill_manual(values=c("red", "blue", "green","yellow","orange"))
#对应分组指定 (左下)
p + scale_fill_manual(values=c("Fair" = "red", "Good" = "blue", "Very Good" = "green" , Premium = "orange", Ideal = "yellow"))

#更改图例名字,对应指定并更改图例标签 (右下)

p + scale_fill_manual("class", values=c("red", "blue", "green","yellow","orange"),

                      breaks = c("Fair", "Good", "Very Good","Premium","Ideal"),

                      labels = c("一般", "好", "很好", "高级", "理想"))

brewer 使用ColorBrewer的颜色

#palette参数调用色板
library(RColorBrewer)
#主要是palette参数调用色板
p + scale_fill_brewer() # 默认使用Blues调色板中的颜色(左)
p + scale_fill_brewer(palette = "Greens") #使用Greens调色板中的颜色 (右)
p + scale_fill_brewer(palette = "Greens",direction = -1)

grey 使用不同程度的灰色

#通过start end 两个参数指定,0为黑,1为白,都在0-1范围内

p + scale_fill_grey()  # 左图

#设定灰度范围

p + scale_fill_grey(start=1, end=0)  # 右图

p + scale_fill_grey(start=1, end=0.5)

1.4 更改连续型变量的颜色函数

#构建数据集
df <- data.frame(
x = runif(100),
y = runif(100),
z1 = rnorm(100)
)
p <- ggplot(df, aes(x, y)) + geom_point(aes(colour = z1))

gradient 创建渐变色#参数设定节点颜色

#设置两端颜色
p + scale_color_gradient(low = "white", high = "black")
#设置中间过渡色
p + scale_color_gradient2(low = "red", mid = "white", high = "blue")
#使用R预设调色板
p + scale_color_gradientn(colours =rainbow(10))
#legeng展示指定标签
p + scale_color_gradient(low = "white", high = "black",
                           breaks=c(1,2,0.5),
                           labels=c("a","b","c"))
#legend名称
p + scale_color_gradient("black", low = "white", high = "black",
                           limits=c(0.5,2))


distiller 使用ColorBrewer的颜色

#将ColorBrewer的颜色应用到连续变量上

p + scale_color_distiller(palette = "Spectral")

p + scale_color_distiller(palette = "Greens")

2 坐标轴标尺修改(x , y)

本部分主要是对坐标轴做如下改变,

  • 更改坐标轴名称
  • 更改x轴上标数的位置和内容
  • 显示对一个轴做统计变换
  • 只展示一个区域内的点
  • 更改刻度标签的位置

实现上面的这些可以使用scale_x等函数,同时像xlab这样的函数实现其中某一方面的功能,但是用起来更加方便

因为这里的数据也有连续和离散之分,所以也要使用不同的函数来实现。

# 横坐标是离散变量,纵坐标是连续变量
p <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_point()
# 更改坐标轴名称
p + scale_x_discrete("cyl")
# 更改横轴标度
p + scale_x_discrete(labels = c("4"="a","6"="b","8"="c"))
# 指定横轴顺序以及展示部分
p + scale_x_discrete(limits=c("6","4"))

# 连续变量可以更改标度(图与上相似,略)
p + scale_y_continuous("ylab_mpg")
p + scale_y_continuous(breaks = c(10,20,30))
p + scale_y_continuous(breaks = c(10,20,30), labels=scales::dollar)
p + scale_y_continuous(limits = c(10,30))
# 连续变量可以更改标度,还可以进行统计变换
p + scale_y_reverse() # 纵坐标翻转,小数在上面,大数在下面
p + scale_y_log10()
p + scale_y_continuous(trans = "log10")
p + scale_y_sqrt()
# 更改刻度标签的位置
p + scale_x_discrete(position = "top") +
  scale_y_continuous(position = "right")

注:除使用scale参数进行设置外,后面会介绍使用更简单易用的函数。

相关文章
|
编解码 数据可视化 索引
Matplotlib引领数据图表绘制
Matplotlib引领数据图表绘制
|
自然语言处理 数据可视化 算法
第5章 数据可视化——5.4 四维图形可视化
第5章 数据可视化——5.4 四维图形可视化
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
6月前
|
数据可视化 定位技术 网络架构
R语言在地图上绘制月亮图、饼状图数据可视化果蝇基因种群
R语言在地图上绘制月亮图、饼状图数据可视化果蝇基因种群
|
6月前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
|
JSON 数据可视化 定位技术
可视化 | Python绘制高颜值台风地理轨迹图
可视化 | Python绘制高颜值台风地理轨迹图
|
JavaScript 数据可视化 前端开发
[数据可视化]绘制持仓榜单的“棒棒糖图”
首先对数据进行清洗和处理, pandas读取数据,这里需要去除 000905_SH 列,以及删除全0行。
|
6月前
|
数据可视化 测试技术 定位技术
数据可视化——如何绘制地图
数据可视化——如何绘制地图
|
数据可视化 C#
第5章 数据可视化——5.2 二维图形绘制(2)
第5章 数据可视化——5.2 二维图形绘制(2)
|
自然语言处理 数据可视化
第5章 数据可视化——5.2 二维图形绘制(4)
第5章 数据可视化——5.2 二维图形绘制(4)