前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >答读者问:R语言ggplot2做折线图的几个细节

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

作者头像
用户7010445
发布2024-03-04 13:19:19
2840
发布2024-03-04 13:19:19
举报
文章被收录于专栏:小明的数据分析笔记本

给出的示例图如下

今天的推文介绍一下使用R语言的ggplot2画折线图的这几个细节如何调整

ggplot2里画折线图的函数是geom_line(),这个函数是按照y值的大小从左往右,如果要实现上图所示折线的方向可以向左拐,可以使用geom_path()函数,比如

首先是构造一个数据

代码语言:javascript
复制
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()函数两个图的差异

代码语言:javascript
复制
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

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

这个我的做法是更改原始数据,把数据的正值都改成负值,比如

代码语言:javascript
复制
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

改成负值然后再修改坐标轴的标签,对坐标轴的标签取绝对值就可以

代码语言:javascript
复制
p4+
  scale_y_continuous(labels = abs)

第二个问题是X轴在顶部

代码语言:javascript
复制
p4+
  scale_y_continuous(labels = abs)+
  scale_x_continuous(position = "top")

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

代码语言:javascript
复制
p4+
  scale_y_continuous(labels = abs,expand = c(0,0))+
  scale_x_continuous(position = "top",expand = c(0,0))+
  coord_cartesian(clip = "off")

第四个问题是添加边框

代码语言:javascript
复制
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")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是y轴数值从上面依次增大
  • 第二个问题是X轴在顶部
  • 第三个问题是图紧挨着坐标轴
  • 第四个问题是添加边框
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档