给出的示例图如下
今天的推文介绍一下使用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
这个我的做法是更改原始数据,把数据的正值都改成负值,比如
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
改成负值然后再修改坐标轴的标签,对坐标轴的标签取绝对值就可以
p4+
scale_y_continuous(labels = abs)
p4+
scale_y_continuous(labels = abs)+
scale_x_continuous(position = "top")
p4+
scale_y_continuous(labels = abs,expand = c(0,0))+
scale_x_continuous(position = "top",expand = c(0,0))+
coord_cartesian(clip = "off")
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")