r - 未在 ggplot 中显示所有 x 轴标签
问题描述
我有一个包含许多列的数据集。最后一列(标签)显示每个用户(行)的集群成员。如何编辑我的代码以仅显示 x 轴的几个标签?,因为现在日期重叠并且无法读取。我想显示每五个日期中的第一个、最后一个和一个。例如,显示日期1,5,10,15,....,133
,其中1
和133
是第一个和最后一个日期。顺便说一句,我使用过scale_x_date()
但我没有成功。
数据样本
mat <- structure(c(1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 2, 3),
.Dim = c(3L, 5L),
.Dimnames = list(c("A", "B", "C"),
c("2011-1-6", "2011-1-9", "2011-1-15", "2011-2-19", "Labels")))
代码
library(tidyverse)
mat %>%
as.data.frame() %>%
mutate(id=1:nrow(mat),
Labels = as.factor(Labels)) %>%
pivot_longer(cols=starts_with("2011")) %>%
filter(value==1) %>%
ggplot(aes(x=name, y=id, color=Labels)) +
geom_point() +
theme(axis.text.x = element_text(angle = 90))
解决方案
您可以使用scale_x_date
. 在@Rui Barradas 的评论之后,您首先必须将日期的类设置为"Date"
.
然后,使用scale_x_date
,您可以使用 控制中断date_breaks
。您还可以使用 控制格式date_labels
。有关?scale_x_date
更多信息,请参阅。以下是每 5 天有一个轴标签的方法:
mat %>%
as.data.frame() %>%
mutate(id=1:nrow(mat),
Labels = as.factor(Labels)) %>%
pivot_longer(cols=starts_with("2011")) %>%
mutate(name = as.Date(name)) %>%
filter(value==1) %>%
ggplot(aes(x=name, y=id, color=Labels)) +
geom_point() +
scale_x_date(date_labels = "%Y-%m-%d", date_breaks = "5 days") +
theme(axis.text.x = element_text(angle = 90))
推荐阅读
- android - “模拟位置应用”出现在列表中但无法选择
- javascript - 表单的 Web 自动化因设置输入值而失败
- laravel - Laravel 资源 - 如何检查给定值是否存在?
- javascript - 当成员加入服务器时尝试添加角色
- c++ - 完成搜索任务的空输出文件
- javascript - 如果我们已经将 dispatch 作为 props,为什么还需要 mapDispatchToProps?
- arcore - Google 增强图像页面上的增强图像示例
- python - Maya python找到最近的顶点以将变形器贴图从一个几何体复制到另一个几何体
- python - 如何在熊猫数据框列中查找文本重合并对其进行计数
- python - 网格搜索需要 30 多分钟,有什么方法可以减少这种情况吗?(朱庇特天青)