文章目录
- ggplot2画图
- 1.ggplot2画柱形图时,横坐标顺序的调整
- 2.ggplot2调整调色板颜色
- (1) 手动修改
- (2)渐变色
- (3)RColorBrewer包
- 3.根据经纬度计算距离:
- 4.新建空矩阵或者向量
- 5.在频率直方图图上添加曲线
- 6 线型-点型调整^【3】^
- 7组合图的图例如何画^【4】^
- 8 ggplot2中,Q-Q图的画法
- 9 ggsci的颜色查看及显示
- 10 数据操作
- 11将字符串转换为变量
- 12 生成日期序列
- 13 R语言保存环境里的所有变量
- 14 geom_sf与ggplot2在地图上绘制条形图
- 15 坐标轴小数点后位数
- 16 报错Do you need to adjust the group aesthetic?
- [17 ggridges扩展包](https://r-charts.com/distribution/ggridges/)
- 参考文献
ggplot2画图
1.ggplot2画柱形图时,横坐标顺序的调整
默认情况下是按照英文字母递增顺序排序,即b,d,g,k,r,w。需要对date.frame调整,指定不同的顺序,可以将x轴列指定为具有指定顺序的因子,也可以根据场景使用reorder()函数。修改的命令参考如下。
ma$classify <- factor(ma$classify, levels=c( "b", "r","g","w","d","k"), ordered=TRUE)
折线图
p+ scale_x_discrete(limits=c('Jan','Feb','Mar','Apr', 'May', 'Jun','Jul' ,'Aug', 'Sep','Oct' ,'Nov','Dec'))
2.ggplot2调整调色板颜色
(1) 手动修改
scale_fill_manual和scale_color_manual函数用于手动修改颜色
p + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))#用于面的填充色
p + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))#用于点、线
颜色代码大全一览
(2)渐变色
scale_color_gradient, scale_fill_gradient:两种颜色的连续梯度
scale_color_gradient2, scale_fill_gradient2:不同梯度
scale_color_gradientn, scale_fill_gradientn:多种颜色梯度
scale_fill_grey()可以看做是黑、白的渐变
①默认的深蓝到浅蓝渐变
df <- data.frame(
x = runif(100),
y = runif(100),
z1 = rnorm(100),
z2 = abs(rnorm(100)))
# Default colour scale colours from light blue to dark blue
ggplot(df, aes(x, y)) +geom_point(aes(colour = z2))
②两颜色渐变scale_colour_gradient2()
# For diverging colour scales use gradient2
ggplot(df, aes(x, y)) +geom_point(aes(colour = z1)) +scale_colour_gradient2()
③多颜色渐变scale_colour_gradientn
注意多颜色渐变的白色带不在中间
# Use your own colour scale with gradientn
ggplot(df, aes(x, y)) +geom_point(aes(colour = z1))
+scale_colour_gradientn(colours = terrain.colors(10))
(3)RColorBrewer包
调色板工具除了手动设置外,还可以借助RColorBrewer包提供的调色板。
p + scale_fill_brewer(palette="Set2")
p + scale_color_brewer(palette="Set2")
3.根据经纬度计算距离:
distm() in package geosphere
geoDist() in package SoDA
4.新建空矩阵或者向量
预定义设置矩阵或者向量【2】.
x=vector() #创建的为空向量(可以为数值或者字符串)
x<-numeirc(0) #长度可变的存储数字的向量
x=character() #创建出来的为字符串向量
x<-NULL; x[1]<-2;…… #每次给x赋值长度自动延长,生成的也为向量
vector(mode="numeric",length=0)定义一个空向量,然后添加元素值
x=matrix(nrow = 2,ncol=3) #创建空矩阵
5.在频率直方图图上添加曲线
p<-ggplot(d, aes(x=w)) + geom_histogram(aes(y=..density..), binwidth=1)+
geom_line(data =mm,aes(x=mm$xx,y=mm$value,colour=class,group = class), size=1)
6 线型-点型调整【3】
scale_linetype_discrete,scale_linetype_discrete scale将12个不同的值映射到12个预定义的linetype。
d=data.frame(a=c("a","b","c","d","e","f","g","h", "i", "j", "k", "l"))
ggplot() +
scale_x_continuous(limits=c(0,1), breaks=NA, name="") +
scale_y_discrete(name="") +
scale_linetype_discrete(legend=F) +
geom_segment(data=d, mapping=aes(x=0, xend=1, y=a, yend=a, linetype=a))
scale_linetype_identity,scale_linetype_identity scale可以用来传递任何合法的linetype值(它的映射是identity函数,因此它不会改变任何东西)。
d=data.frame(a=c("a","b","c","d","e","f","g","h", "i", "j", "k", "l"))
ggplot() +
scale_x_continuous(limits=c(0,1), breaks=NA, name="") +
scale_y_discrete(name="") +
scale_linetype_discrete(legend=F) +
geom_segment(data=d, mapping=aes(x=0, xend=1, y=a, yend=a, linetype=a))
7组合图的图例如何画【4】
下面为一般设置,这样会产生两个图例。
g+scale_color_manual(values=c("Blue1","Red1","Green","Black"))+
scale_linetype_manual(values=c(1,2,1,2) )
我的设置是,增加一个图例名称,比如图例标题为group,则会对统一的标题操作。
g+ scale_color_manual(name = "group",values=c("Blue1","Red1","Green","Black"))+
scale_linetype_manual(name = "group",values=c(1,2,1,2) )+
g2+ theme(legend.title=element_blank(),legend.position = c(0.9, 0.9))# 删除标题名称,确定位置
图中图的一些建议【5】。
8 ggplot2中,Q-Q图的画法
两列未知分布数据的Q-Q图可用下列代码。
df <- as.data.frame(qqplot(x, y, plot.it=FALSE))
p<-ggplot(df) + geom_point(aes(x=x, y=y))
p
9 ggsci的颜色查看及显示
以lancet期刊为例,
library("scales")
show_col(pal_lancet("lanonc")(9))
show_col(pal_lancet("lanonc", alpha = 0.6)(9))#显示出图形
pal_lancet("lanonc")(9)#显示代码
10 数据操作
例子 命令1 aggregate(.~ID,data=df,mean)
命令2 library(dplyr)
df %>% group_by(ID) %>% summarise_each(funs(mean))
11将字符串转换为变量
w=paste("a",1:5,sep = "") #生成a1,a2,..,a5等
assign(w,1)
data=get(w) #get()将字符串转换为变量
12 生成日期序列
dateseries <- seq.Date(from = as.Date("1948/01/01",format = "%Y/%m/%d"), by = "month", length.out = 420)
# 如果想将日删除(只保留年月)
temp <- format(dateseries, format = "%Y/%m")
13 R语言保存环境里的所有变量
主要函数与其功能列于下表
函数名称 | 功能 |
ls() | 显示当前环境中的所有变量,只要显示处的数据可以被保存 |
save.image(file=‘名称.RData’) | 保存ls()显示的所有数据 |
dir() | 查看名称.RData是否被保存到默认路径 |
load(‘名称.RData’) | 加载保存的环境变量 |
14 geom_sf与ggplot2在地图上绘制条形图
15 坐标轴小数点后位数
scaleFUN <- function(x) sprintf("%.2f", x) #如保留两位
p + scale_y_continuous(labels=scaleFUN)
16 报错Do you need to adjust the group aesthetic?
#`geom_line()`: Each group consists of only one observation.
#ℹ Do you need to adjust the group aesthetic?
ggplot(data, aes(x=Month, y=value, shape=Year,color=Year,group=Year))+ geom_point() + geom_line()# 加入group=Year
17 ggridges扩展包