我有一个具有 65k 行的数据的简单频率直方图,这是我的示例数据代码:
data <- data.frame(var1=floor(6*rnorm(65000) + 1))
data %>%
ggplot(aes(x=var1)) +
geom_histogram(fill="lightblue", color="black", alpha=0.9, bins = 30) +
theme(plot.title = element_text(size=15),
axis.text.x = element_text(angle = 90, vjust = 0.5)) +
stat_bin(geom="text",
colour="black",
bins = 30,
aes(label=..count..),
angle = 45,
vjust=-.5)
该图有 30 个 bin,但在 x 轴上有 3 个标签:
我只希望它为每个垃圾箱贴上标签。
我尝试了 theme() 和 scale_x_cont() 但它们没有用并且弄乱了整个情节。我不想更改任何内容,只想在 x 上添加标签。谢谢!
一种方法可以使用
scale_x_continuous()
和 breaks
library(dplyr)
library(ggplot2)
data <- data.frame(var1 = floor(6 * rnorm(200) + 1))
data %>%
ggplot(aes(x = var1)) +
geom_histogram(fill = "lightblue", color = "black", alpha = 0.9, bins = 30) +
theme(plot.title = element_text(size = 15),
axis.text.x = element_text(angle = 90, vjust = 0.5)) +
stat_bin(
geom = "text",
colour = "black",
bins = 30,
aes(label = ..count..),
angle = 45,
vjust = -0.5
) +
scale_x_continuous(breaks = seq(min(data$var1), max(data$var1), by = 1))
您可以使用
scale_x_continuous
修改 x 轴刻度的外观。您可以使用 n.breaks
更改休息次数,或使用 breaks
或 labels
进行调整。 documentation 提供了非常详细的信息,这本 book 是一个很棒的资源,可以更好地理解尺度(以及 ggplot2
作为一个整体)。
对于您的代码,答案如下所示:
data %>%
ggplot(aes(x=var1)) +
geom_histogram(fill="lightblue", color="black", alpha=0.9, bins = 30) +
theme(plot.title = element_text(size=15),
axis.text.x = element_text(angle = 90, vjust = 0.5)) +
stat_bin(geom="text",
colour="black",
bins = 30,
aes(label=..count..),
angle = 45,
vjust=-.5) +
scale_x_continuous(n.breaks = 50)
我还要补充一点,
..count..
已被 ggplot2 3.4.0
弃用。 这里 是关于弃用和新方法的更多信息。为避免收到警告,请尝试:
data %>%
ggplot(aes(x=var1)) +
geom_histogram(fill="lightblue", color="black", alpha=0.9, bins = 30) +
theme(plot.title = element_text(size=15),
axis.text.x = element_text(angle = 90, vjust = 0.5)) +
stat_bin(geom="text",
colour="black",
bins = 30,
aes(label = after_stat(count)),
angle = 45,
vjust=-.5) +
scale_x_continuous(n.breaks = 50)
从
?scale_x_continuous
,breaks
参数可以是其中之一
不休息NULL
由转换对象计算的默认中断waiver()
位置的数字向量
以极限作为输入并返回中断作为输出的函数(例如,
返回的函数)。也接受scales::extended_breaks()
lambda 函数符号。rlang
使用最后一个选项,我们可以创建一个简单的函数,给出轴上的每个整数:
data <- data.frame(var1=floor(6*rnorm(200) + 1))
data %>%
ggplot(aes(x=var1)) +
geom_histogram(fill="lightblue", color="black", alpha=0.9, bins = 30) +
theme(plot.title = element_text(size=15),
axis.text.x = element_text(angle = 90, vjust = 0.5)) +
stat_bin(geom="text",
colour="black",
bins = 30,
aes(label=..count..),
angle = 45,
vjust=-.5) +
scale_x_continuous(breaks = function(range) floor(range[1]):ceiling(range[2]))