公众号后台有读者留言问到折线图相关的问题,他的问题有
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