ggplot2R语言做图绘图技巧

R ggplot2画图 注释和坐标系调整

2021-07-26  本文已影响0人  毛线东东a

如何修改坐标轴的显示范围

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 轴的刻度线

如何给坐标轴和图形添加标题

p + xlab("这是 X 轴") + ylab("这是 Y 轴") + ggtitle("这是标题")
p + labs(x = "这是 X 轴", y = "这是 Y 轴", title = "这是标题")

如何设置中文字体

如果想要设置中文的字体,则需要定义字体的格式,比如宋体、华文楷体等。
但是定义的字体需要是电脑上已经有的。
拿我自己的mac举例子。需要去 字体册,查看所要定义的字体对应的英文。如下图,选择汉仪跳跳体简,对应的英文为HYTiaoTiaoTiJ。

image.png
写法如下:
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=#)

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

上一篇下一篇

猜你喜欢

热点阅读