(更多内容请见:
R、ggplot2、shiny 汇总
)
ggplot2中图例基础:
-
ggplot2会自动生成图例,我们可以对图例进行删改。
-
相同名称相同颜色的图例会自动合并。如下图,点图和线图的color、shape产生的图例都是相同名称相同颜色的,所以合并在一次:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8)
如何隐藏图例?
方法一:用 guides(fill=FALSE) 隐藏由fill产生的图例,同理可以隐藏由color、shape产生的图例。
方法二:增加图层的时候把参数 show_guide 设为 FALSE,隐藏某图层的图例。
方法三:作用和方法一类似,设置 scale_fill_discrete(guide = FALSE),可以把中间的 fill 改成 color 或者 shape,从而隐藏相应的图例。
方法三:用 theme(legend.position = “none”) 来隐藏全局图例。
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8, show_guide = FALSE) ##隐藏此图层产生的图例
# + guides(fill=FALSE) ##隐藏由fill产生的图例
# + scale_fill_discrete(guide = FALSE) ##隐藏由fill产生的图例
# + theme(legend.position = "none") ##隐藏所有图例
如何隐藏图例标题?
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8)
p + guides(color=guide_legend(title=NULL)) ##对color产生的图例去掉标题
# p + theme(legend.title=element_blank()) ##把所有图例的标题去掉
如何更改图例顺序?
用 scale_color_discrete,通过 breaks 参数设置图例的顺序(注意也可以把color改成fill或者shape):
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
scale_color_discrete(breaks = c('B','C','A','D'))
直接将图例逆序:
p + guides(color = guide_legend(reverse=TRUE))
或者:p + scale_color_discrete(guide = guide_legend(reverse=TRUE))
或者:p + scale_color_discrete(breaks = rev(levels(dt$C)))
如何更改图例的标签文字?
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
scale_colour_discrete(breaks = c('A','B','C','D'), labels = c('W','X','Y','Z'))
如何设置图例标题和标签文字的大小、颜色?
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
theme(legend.title = element_text(color="134", size=16, face="bold")) + ##设置标题,face="bold"加粗
theme(legend.text = element_text(color="azure4", size = 14, face = "bold")) ##设置标签文字
如何将图例放到图的上方:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,21,6,18,9,25,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, group = factor(1))) +
geom_point(aes(color = C, shape = C), size = 3.8) +
geom_line(aes(color = C), size = 0.8) +
theme(legend.position = 'top') ##同理可以取 bottom、right、left
x=seq(1,10,length=100)
data=data.frame(x,dnorm(x,mean=6.5,sd=1))
names(data)=c('x','new.data')
x.ribb
引言图例的设置包括移除图例、改变图例的位置、改变标签的顺序、改变图例的标题等。移除图例有时候你想移除图例,使用 guides()。library(ggplot2)
p <- ggplot(PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot()
p + guides(fill=FALSE)改变图例的位置我们可以用theme(l
来自具有:
# install.packages("devtools")
devtools :: install_github( " milesmcbain/inlegend " )
library( spData )
# > To access larger datasets in this package, install the spDataLarge
# > package with: `install.packages('spDataLarge',
# > repos='https://nowosad.github.io/drat/', type='source')`
我们以连续的标尺开始示例,在映射数据是连续的时候,我们选择continous函数族,这些函数可以进一步指定它们是否是分箱的,(分箱是指将连续的变量分组为数个分组,每个组都被指定到特定的颜色中),在后续示例你会在图例中注意到分箱和连续颜色的区别。将日期映射到颜色我个人觉得是种很奇怪的行为(起码我一次都没遇到过),但既然ggplot2还是给了这种标尺(tidyverse就是喜欢重复造轮子),在文章的最后还是要介绍一下。让我们直入正题,虽然ggplot2拥有多达22种的标尺函数,但我们可以根据。
scale_alpha_*() 【设置透明度】
scale_color_*() 或 scale_colour_*() 【设置边框/散点颜色】
scale_fill_*() 【设置填充颜色和图例相关内容】
scale_linetype_*() 【设置线条样式】
标尺是ggplot2作图必需的元素,在映射一节提到了它的概念并简单进行了设置。在数据分析阶段,为避免陷入数据无关的垃圾坑,我们只需要设置映射,ggplot2自动配置合适的标尺并产生坐标和图例。这是ggplot2适合数据可视化分析的原因之一。
在图形美化阶段,我们可以通过修改标尺改善图形外观。标尺设置一般不会对数据产生影响,但坐标轴标尺除外。
Table of Contents
1. 标尺
颜色设置,在R的可视化中,应该算是相对比较重要的一项内容,如何把握颜色,很大程度上影响图形的展现效果。
在ggplot的scale设置中,颜色相关的函数较多:
scale_fill/colour_hue(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1, na.value = "grey50")
theme(legend.title=element_blank()
3.修改图例顺序
scale_color_discrete(limits=c("a","d","c"))
4.不加legend
+theme(legend.position = "none")
5.删除legend.title
theme(legend.ti...
1、输入数据heartrt <- data.frame(hr=c(56,53,53,65,70,58,51,
78,62,70,73,67,75,65,
77,86,65,83,79,80,77),
class=gl(3,7,labels =...