r - ggplot 删除特定的 x 轴标签
问题描述
library(tidyverse)
df <- data.frame(date = as.Date(c("2017-12-01", "2018-01-01", "2018-02-01",
"2018-03-01", "2018-04-01", "2018-05-01",
"2018-06-01", "2018-07-01", "2018-08-01",
"2018-09-01", "2018-10-01", "2018-11-01")),
value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823,
0.925127361, 0.237531067, 0.301930968, 0.133373326,
0.082275426, 0.464255614, 0.2366749, 0.652084264))
ggplot(df, aes(date, value)) +
geom_col() +
scale_x_date(date_breaks = "1 month",
date_labels = "%b") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.3))
我想保持下面显示的情节,完全一样,有两个例外。我想删除Nov
x 轴标签上的第一个和 x 轴标签上的最后一个Dec
。我添加coord_cartesian(xlim = as.Date(c("2017-12-01", "2018-11-01")))
到上面的代码块中,但这消除了 x 轴两端的“空白”填充。
我如何简单地告诉 ggplot 删除第一个和最后一个 x 轴标签的文本?这将是第一个Nov
也是最后一个Dec
。请注意df
,这些在我的数据框中根本不存在,因此dplyr
过滤器可能不起作用。
解决方案
您可以通过使用 seq.date 设置中断来实现您想要的:
library(tidyverse);library(lubridate)
df <- data.frame(date = as.Date(c("2017-12-01", "2018-01-01", "2018-02-01",
"2018-03-01", "2018-04-01", "2018-05-01",
"2018-06-01", "2018-07-01", "2018-08-01",
"2018-09-01", "2018-10-01", "2018-11-01")),
value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823,
0.925127361, 0.237531067, 0.301930968, 0.133373326,
0.082275426, 0.464255614, 0.2366749, 0.652084264))
ggplot(df, aes(date, value)) +
geom_col() +
scale_x_date(
date_labels = "%b",
breaks = seq.Date(ymd("2017-12-01"),ymd("2018-11-01"), by = "month")) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.3))
推荐阅读
- python - 目标检测的输入图像大小估计中的感受野
- powershell - Powershell 脚本可以手动工作,但不能在任务调度程序中工作
- sql - 小批量删除 CTE 记录
- python - Tableau Online 的 SAML 配置问题
- c# - 使用 ZXing 和 AR Core 在 Unity 中扫描二维码
- javascript - 打字稿中语法[]的含义是什么
- java - oAuth2 Android 方法
- typescript - 在 vscode 中编译(transpile)、复制文件、调试链
- php - 如何使用 php 从上一页获取 html 表数据到当前页
- c# - 使用 Entity Framework Core (2.1) 调用标量函数的最佳实践