答读者问:R语言ggplot2做折线图的几个细节

公众号后台有读者留言问到折线图相关的问题,他的问题有
y轴数值从上面依次增大
x轴在顶部
图紧挨着坐标轴
图的四周加框线
给出的示例图如下

图片

image.png
今天的推文介绍一下使用R语言的ggplot2画折线图的这几个细节如何调整
ggplot2里画折线图的函数是geom_line(),这个函数是按照y值的大小从左往右,如果要实现上图所示折线的方向可以向左拐,可以使用geom_path()函数,比如
首先是构造一个数据
x<-c(1,2,3,2,3,5)
y<-c(1,2,3,4,5,6)

dat<-data.frame(x=x,y=y)
可以比较一下geom_line()和geom_path()函数两个图的差异
x<-c(1,2,3,2,3,5)
y<-c(1,2,3,4,5,6)

dat<-data.frame(x=x,y=y)

library(ggplot2)
library(patchwork)

p1<-ggplot(data=dat,aes(x=x,y=y))+
geom_line()+
geom_point(size=5)+
ggtitle(“geom_line()”)+
theme_bw()

p2<-ggplot(data=dat,aes(x=x,y=y))+
geom_path()+
geom_point(size=5)+
ggtitle(“geom_path()”)+
theme_bw()

p1+p2

image.png
首先是y轴数值从上面依次增大

这个我的做法是更改原始数据,把数据的正值都改成负值,比如
x<-c(1,2,3,4,5)
y<-c(30,25,22,18,10)
dat02<-data.frame(x=x,y=y)

p3<-ggplot(data = dat02,aes(x=x,y=y))+
geom_path()+
geom_point(size=5)
p3

p4<-ggplot(data = dat02,aes(x=x,y=-y))+
geom_path()+
geom_point(size=5)

p3+p4

image.png
改成负值然后再修改坐标轴的标签,对坐标轴的标签取绝对值就可以
p4+
scale_y_continuous(labels = abs)

image.png
第二个问题是X轴在顶部

p4+
scale_y_continuous(labels = abs)+
scale_x_continuous(position = “top”)

image.png
第三个问题是图紧挨着坐标轴

p4+
scale_y_continuous(labels = abs,expand = c(0,0))+
scale_x_continuous(position = “top”,expand = c(0,0))+
coord_cartesian(clip = “off”)

image.png
第四个问题是添加边框

p4+
scale_y_continuous(labels = abs,expand = c(0,0))+
scale_x_continuous(position = “top”,expand = c(0,0))+
coord_cartesian(clip = “off”)+
theme_bw(base_size = 15)+
theme(panel.grid = element_blank(),
plot.margin = unit(c(0.5,1,1,0.5),’cm’))+
labs(x=”AAA”,y=”BBB”)

image.png
欢迎大家关注我的公众号
小明的数据分析笔记本

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/412507.html

(0)
联系我们
联系我们
分享本页
返回顶部