前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言ggplot2做柱形图如何让起始位置不是0?

R语言ggplot2做柱形图如何让起始位置不是0?

作者头像
用户7010445
发布2023-01-06 19:58:20
6800
发布2023-01-06 19:58:20
举报

R语言ggplot2做柱形图如何让起始位置不是0?之前有人在公众号留言问过这个问题,当时自己没有思路,今天看到有人在公众号留言问 下面这个图如何实现。

image.png

突然有了想法,做柱形图的时候可以不用 geom_bar() 或者 geom_col()直接画柱子的函数,可以用geom_segment()画线段的函数,只是需要准备示例数据集的时候稍微做一个调整就可以了

正常柱形图的示例数据集如下

image.png

作图代码

代码语言:javascript
复制
library(readxl)
library(ggplot2)

dat01<-read_excel("data/20220601/20220601.xlsx")
dat01
ggplot(data=dat01,aes(x=var1,y=var2))+
  geom_col(aes(fill=var1))

image.png

如果想让起始位置不是0,我们准备数据集如下,增加一列起始位置

image.png

作图代码

代码语言:javascript
复制
dat02<-read_excel("data/20220601/20220601.xlsx",
                  sheet = "Sheet2")
dat02

ggplot(data=dat02,aes(x=var1,xend=var1,
                      y=ystart,yend=yend))+
  geom_segment(aes(color=var1),
               size=30,
               show.legend = FALSE)+
  scale_y_continuous(breaks = 3:10)

image.png

接下来模仿一下推文开头提到的图

来自于论文 Seasonal variation in community composition and distributional ranges of birds along a subtropical elevation gradient in China 的figure4

论文中没有找到原始数据,自己构造一份吧 只准备两个物种的数据

image.png

作图代码

代码语言:javascript
复制
library(ggplot2)
library(readxl)
dat03<-read_excel("data/20220601/20220601.xlsx",
                  sheet = "Sheet3")
dat03

ggplot(data=dat03,aes(x=species,xend=species,
                      y=lower,yend=upper))+
  geom_segment(aes(color=season),
               size=30)+
  scale_color_manual(values = c("winter"="#009edc",
                                "both"="#93989e",
                                "breedingseason"="#f5c512"))+
  scale_y_continuous(limits = c(700,3400),
                     breaks = seq(700,3400,300))+
  theme_bw()+
  theme(panel.grid.major.x = element_blank(),
        panel.grid.major.y = element_line(linetype="dashed"),
        panel.grid.minor.y = element_blank(),
        axis.text.x = element_text(angle=90,
                                   hjust=1,
                                   vjust=0.5,
                                   face="italic"))+
  labs(x="Species",y="Elevation (m)")+
  guides(color=guide_legend(override.aes = list(size = 1)))

image.png

这个只有两个物种的数据看起来和论文中的图差别还挺大的,物种准备全了效果就是一样的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作图代码
  • 作图代码
  • 接下来模仿一下推文开头提到的图
  • 作图代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档