不同跳跃的轴刻度之间的距离相等

问题描述 投票:0回答:1

我们正在使用一个如下所示的数据框

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

r ggplot2 geom-bar
1个回答
0
投票

我认为您需要做的就是将

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

© www.soinside.com 2019 - 2024. All rights reserved.