[英]ggplot x-axis labels with all x-axis values
我正在用geom_point
ggplot
x 轴将是个人 ID,y 轴是变量 A。如何在 x 轴上 ggplot 所有和个人 ID 值而不重叠标签? ID 可能不连续。
df 样本(实际行长得多)
> df
ID A
1 4
2 12
3 45
5 1
情节代码:
ggplot(df, aes(x = ID, y = A)) + geom_point()
上面的代码有间隔的 x 轴,但不显示单独的 ID。
谢谢!
这是你在找什么?
ID <- 1:50
A <- runif(50,1,100)
df <- data.frame(ID,A)
ggplot(df, aes(x = ID, y = A)) +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
scale_x_continuous("ID", labels = as.character(ID), breaks = ID)
这将产生这个图像:
因此,您将获得每个ID值的标签。 如果你想删除网格线(有太多我的口味)你可以通过添加theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
删除它们
编辑:更简单的方法是使用ID作为情节的一个因素。 像这样:
ggplot(df, aes(x = factor(ID), y = A)) +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
xlab("ID")
此方法的优点是您不会从缺少的ID中获取空白空间
编辑2:关于重叠标签的问题:我猜测它来自大量要绘制的ID。 我们有几种方法可以解决这个问题。 所以我们说你的情节看起来像这样:
一种想法是通过修改轴的break参数来隐藏x轴上的每个第3个标签:
ggplot(df, aes(x = factor(ID), y = A)) +
geom_point() +
scale_x_discrete(breaks = ID[c(T,F,F)]) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
xlab("ID")
这导致了这个:
如果无法隐藏标签,则可以将绘图拆分为子图。
df$group <- as.numeric(cut(df$ID, 4))
ggplot(df, aes(x = factor(ID), y = A)) +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
xlab("ID") +
facet_wrap(~group, ncol = 1, scales = "free_x")
这导致了这个:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.