R ggplot2画图 注释和坐标系调整
如何修改坐标轴的显示范围
scale_x_continuous()
scale_y_continuous()
xlim(min,max)
ylim(min,max)
p + scale_x_continuous(limits = c(-5,15))
#将x轴刻度显示范围设置为-5到15
p + scale_y_continuous(breaks=seq(1, 7, 1),limits=c(0,7))
# breaks()可以设置 显示范围,这里是1到7,间隔是1。limits()设置的是 实际的范围,例如这里实际范围是0到7。所以y轴的范围是0到7,但是数字显示1到7,间隔是1。
如何修改坐标轴的刻度标签(内容):
scale_x_continuous(breaks=seq(), labels=c())
scale_y_continuous(breaks=seq(), labels=c())
将x轴的标签 1 2 5 7修改为 张1 张2 张3 张4
p + scale_x_continuous(breaks=seq(1, 7, 2), labels = c("张1","张2","张3","张4"))+theme(text = element_text(family = "HYTiaoTiaoTiJ"))
修改 坐标轴刻度标签的大小、字体、颜色、加粗、位置、角度
theme(axis.text.x =)
theme(axis.text.y =)
p + theme(axis.text.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
删除刻度标签
theme(axis.text = element_blank())
## 删去所有刻度标签
theme(axis.text.y = element_blank())
## 设置 axis.text.y 则只删去 Y 轴的刻度标签,X 轴同理。
theme(axis.text.x = element_blank())
##只删去 X 轴的刻度标签。
删除刻度线
theme(axis.ticks = element_blank())
## 删去所有刻度线
theme(axis.ticks.y = element_blank())
## 只删去 Y 轴的刻度线
theme(axis.ticks.x = element_blank())
## 只删去 x 轴的刻度线
如何给坐标轴和图形添加标题
-
xlab
x轴标题 -
ylab
y轴标题 -
ggtitle
图形标题 labs(x = "x轴标题", y = "y轴标题", title = "图形标题")
p + xlab("这是 X 轴") + ylab("这是 Y 轴") + ggtitle("这是标题")
p + labs(x = "这是 X 轴", y = "这是 Y 轴", title = "这是标题")
如何设置中文字体
如果想要设置中文的字体,则需要定义字体的格式,比如宋体、华文楷体等。
但是定义的字体需要是电脑上已经有的。
拿我自己的mac举例子。需要去 字体册,查看所要定义的字体对应的英文。如下图,选择汉仪跳跳体简,对应的英文为HYTiaoTiaoTiJ。
写法如下:
theme(text = element_text(family = , face=))
family:Font family(字体名称)
还可以定义 字体的一些参数,比如加粗,斜体等。是通过 face参数来指定的。face:Font face(字体) ("plain普通", "italic斜体", "bold加粗", "bold.italic加粗并斜体")
p + labs(x="群体",y="收获体重")+ theme(text = element_text(family = "HYTiaoTiaoTiJ"))
修改 X 轴标题的大小、字体、颜色、加粗、位置、角度
theme(axis.title.x=)
theme(axis.title.y=)
p + xlab("这是 X 轴") + theme(axis.title.x = element_text(size = 15, family = "HYTiaoTiaoTiJ", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
# axis.title.x 修改的是x轴标题
p + theme(axis.text.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
# axis.text.x 修改的是x轴的刻度标签
去掉默认的网格线
theme(panel.grid=element_line(colour=NA))
#panel.grid 网格线
删去外层边框
theme(panel.border = element_blank())
## 删去外层边框
删除外层边框之后怎么在加上x轴和y轴的坐标轴
theme(axis.line = element_line(size=1, colour = "black"))
## 再加上坐标轴(无刻度、无标签)
如何为一个图形添加注释
可以使用annotate()
函数对图像添加注解
用法为:
annotate(geom="", x=, y=, label="", family="", fontface="", colour="", size=#)
- geom表示添加注解的类型,如果=“text”,则表示为文本类型;其他类型查看?annotate
- x、y是给注解在图中赋予一个坐标
- label为要注释的内容
- family、fontface、colour、size等是分别用来控制注解的字体、样式、颜色、大小等
- annotate()和geom_text()有所不同:前者用来添加单独的文本对象,后者则会根据数据创建许多文本对象
annotate("text", x=1.7, y=5, label="= -0.60*** ",size=4)
# 在x为1.7,y
为5的地方加入注释 -0.60*** ,大小为4。
p+mytheme+annotate("text", x=0.5, y=5, label="r",fontface="italic",size=4)+
annotate("text", x=1.7, y=5, label="= -0.60*** ",size=4)
为分面画图的每一个图形 分别 添加独立的注释
在创建分面后配合数据框使用geom_text()
函数
在分面后将因子的标签映射到geom_text()
上即可使得每个分面出现对应因子标签的注解
p<-ggplot(data=exp1_statanalysis_longdata_valid_new, aes(x=Fair, y=Punish_amount))+
geom_point(size=0.6)+
geom_smooth(method="lm", color="#0072B5FF")+
labs(x="The fairness at the distribution", y="The amount of punishment")+
facet_grid(. ~ Intention_Outcome)+
scale_y_continuous(breaks=seq(0, 6, 2))+
scale_x_continuous(breaks=seq(-5, 5, 2))
p
corr_labels <- data.frame(Intention_Outcome=c("fair_unfair","unfair_fair","unfair_unfair"), label1=c("r","r","r"),label2=c("= -0.17","= -0.48***"," = -0.36* "))
#设置需要添加的标签的内容,因为用了facet_grid来分面,所以标签要分别设置。
# geom_text()添加文字内容。x表示x轴的坐标,y表示y轴的坐标
# fontface为字体:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
p + geom_text(x=-3, y=6, aes(label=label1), fontface="italic",size=3,data=corr_labels)+
geom_text(x=-0.8, y=6, aes(label=label2),size=3,data=corr_labels)+mytheme1
为分面画图的每一个图形 都添加统一的注释
使用annotate()
函数,为所有分面都添加统一的标签
p + annotate("text", x=6, y=42, label="label text")
主题
设置画图的主题
mytheme<-theme(axis.title.y=element_text(face="bold",size=12,color="black"),#修改y轴标题的字体为加粗,12,颜色黑色。
axis.title.x=element_text(face="bold",size=12,color="black"),
#axis.title.x=element_blank(),#删去x轴的标题
axis.text=element_text(face="bold", size=11,color="black"),# 设置x轴和y轴的刻度标签 字体为加粗,11,颜色黑色。
panel.background=element_rect(fill="white"),#设置 panel.background:绘图区背景色 为白色
panel.border=element_blank(),# panel.border:去除绘图区边框
axis.line=element_line(color="black",size=1),# 去除绘图区边框后,加上x轴和y轴的轴线 颜色为黑色,size为1.
panel.grid.minor=element_blank(),# panel.grid.minor:次要网格线,除了与坐标轴的标签对应的主要网格线外的线
panel.grid.major=element_blank(),# panel.grid.major: 主要网格线,与坐标轴的标签对应的网格线
# 上面panel.grid.minor和panel.grid.major这两句可以改写为
# panel.grid=element_line(colour=NA)
# 等价于panel.grid=element_blank()
legend.position="right",# 设置图例的位置在 右侧
legend.title=element_text(face="bold",color="black"),# 设置图例的标题 文本为 加粗 黑色
legend.text=element_text(face="bold",color="black"))# 设置图例的文字 为 加粗 黑色
参考资料:
http://blog.csdn.net/bone_ace/article/details/47427453
https://blog.csdn.net/qq_36608036/article/details/105300241
https://rpubs.com/pele/theme