前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot画图:y坐标从0开始,去除x横坐标与柱状图之间的间隙

ggplot画图:y坐标从0开始,去除x横坐标与柱状图之间的间隙

作者头像
Jamesjin63
发布2022-11-03 14:55:33
2.8K0
发布2022-11-03 14:55:33
举报
文章被收录于专栏:EpiHub

[toc]

直接看图解释

image.png

由上图,我们可以看到,1)x横坐标与柱状图有一些距离,那么现在我们要去掉这个距离。怎么办?,2)还发现,y坐标与柱状图也是有距离的。咋去除?

接下来,我们以mtcar数据为例,展示如果去除这些间隙。

1.横坐标从0开始

首先将gear与carb转成factor

代码语言:javascript
复制
# libraries
library(ggthemes)
library(tidyverse)
df=mtcars %>% mutate(gear=factor(gear),
                     cyl=factor(cyl))
# histgram
p=ggplot(df, aes(x = gear,y=mpg, fill = cyl)) + 
  geom_bar(position="dodge", stat="identity",width=0.65)

# start from 0 in x-axis
p +
scale_y_continuous(expand = c(0,0),limits = c(0,30)) 

image.png

2.纵坐标从0开始

这里有些trick,因为factor为横坐标,但是加载scale_x_continuous出错, 所以在scale_x_continuous里面,自定义x-labels。

代码语言:javascript
复制
df=mtcars %>% mutate(gear=(gear),
                     cyl=factor(cyl))
# histgram
p=ggplot(df, aes(x = gear,y=mpg, fill = cyl)) + 
  geom_bar(position="dodge", stat="identity",width=0.65)
# start from 0 in y-axis
p+scale_x_continuous(expand = expansion(mult = c(0,0)))

# add x-labels
p=ggplot(df, aes(x = gear,y=mpg, fill = cyl)) + 
  geom_bar(position="dodge", stat="identity",width=0.65)+
  scale_x_continuous(expand = expansion(mult = c(0,0)),
                     breaks = c(3,4,5),
                     labels = c(3,4,5))
p

image.png

image.png

2.去除网格线与legend

scale_fill_manual可以更改柱状图的颜色。主题里面可去除网格线

代码语言:javascript
复制
p+scale_y_continuous(expand = c(0,0),limits = c(0,30)) +
  scale_fill_manual(
    #expand = c(0, 0), limits = c(0, NA),
values=c("#1F78B4","#FFB300","#FA2017","#33A02C","#DD8EB4","#6A3D9A","#666666"))+
  theme_bw() +
  theme(#legend.position = "none",
    axis.text.x=element_text(angle=30,hjust=1),
    text = element_text(size=10,face="bold"),
    plot.background = element_blank(),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.border = element_blank(),
    strip.text.y = element_blank(), 
    strip.text = element_text(size=10,face="bold"),
    strip.background = element_blank(),
    axis.line = element_line(color = 'black'))+
  labs(y="mpg values",
       x="Gear group",fill="carb")

image.png

参考文献

  1. Ggplot include 0 in axis
  2. Starting bars and histograms at zero in ggplot2
  3. Force the origin to start at 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.横坐标从0开始
  • 2.纵坐标从0开始
  • 2.去除网格线与legend
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档