我们正在使用一个如下所示的数据框
df <- data.frame(
n = c(0, 0, 0, 5, 5, 5, 100, 100, 100),
y = c(1, 2, 1.5, NA, 2, 2.5, NA, 3, 4.5),
f = c("i", "j", "k", "i", "j", "k", "i", "j", "k")
)
为了创建条形图,我编写了这段代码
colors <- c("i" = "#1F1F1F", "j" = "#606060", "k" = "#B3B3B3")
ggplot(data = df, aes(x = n, y = y, fill = f), show.legend = TRUE) +
geom_bar(stat = "identity", position = "dodge", width = 3.5) +
scale_fill_manual(values = colors, labels = c("i", "j", "k"), labs(title = "Title")) +
theme_bw()
它工作正常,但 x 轴上的刻度位置有一个问题。
我们怎样才能有三个标记为
0
、5
和 100
但彼此距离相等的断点?
我尝试过这个
scale_x_continuous(expand = c(0.02, 0.02), breaks=?, labels=c("0", "5", "100"))
但我不知道如何定义breaks
我认为您需要做的就是将
x = n
更改为 x = as.factor(n)
library(ggplot2)
df <- data.frame(
n = c(0, 0, 0, 5, 5, 5, 100, 100, 100),
y = c(1, 2, 1.5, NA, 2, 2.5, NA, 3, 4.5),
f = c("i", "j", "k", "i", "j", "k", "i", "j", "k")
)
colors <- c("i" = "#1F1F1F", "j" = "#606060", "k" = "#B3B3B3")
ggplot(data = df, aes(x = as.factor(n), y = y, fill = f), show.legend = TRUE) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = colors, labels = c("i", "j", "k"), labs(title = "Title")) +
labs(x = "n") +
theme_bw()
#> Warning: Removed 2 rows containing missing values (`geom_bar()`).
创建于 2023-11-22,使用 reprex v2.0.2