我正在使用 ggstats 包中的 gglikert() 函数来创建以中性响应为中心的水平堆叠条形图。我想知道如何手动将 x 轴限制设置为 0% 两侧的 100%。这是一个示例数据框和代码(请忽略因子排序不正确!):
example_data <- data.frame(
Pre = as.factor(c("Somewhat Familiar","Unfamiliar","Somewhat Familiar",
"Somewhat Unfamiliar","Somewhat Familiar","Unfamiliar",
"Neither Unfamiliar or Familiar","Unfamiliar",
"Neither Unfamiliar or Familiar","Unfamiliar")),
Post = as.factor(c("Very Familiar",
"Very Familiar","Somewhat Familiar",
"Very Familiar","Very Familiar","Very Familiar",
"Very Familiar","Somewhat Familiar","Very Familiar",
"Somewhat Familiar"))
)
gglikert(example_data,
add_totals = FALSE)
在这里,您可以看到该函数已根据每个组内的百分比设置轴限制。我希望 x 轴达到 100%(因为还有其他问题具有不同的数据分布,我希望所有轴都相同,尽管答案略有不同,所以我无法对它们进行分面)。
我查看了 gglikert() 的文档并搜索了 Google/Stack Overflow,但没有看到轴限制的选项。
我尝试使用典型的 ggplot2 方法(例如 xlim(0, 100) 或 xlim (-100, 100))设置限制,但因为 x 轴不在典型的顺序刻度上,例如从 -100 到100,这些方法都不起作用。
我选择了这种方法而不是 Likert 包,因为它对于我想要应用的下游格式具有更好的功能(对分面、分面标签和条形标签的更多控制),因此更喜欢使用 gglikert() 的解决方案。
将现有的连续 x 刻度替换为有限制的新刻度
c(-1, 1)
,然后应用 {scales} 包中的百分比标签格式。
library(ggplot2)
library(ggstats)
library(scales)
example_data <- data.frame(
Pre = as.factor(c("Somewhat Familiar","Unfamiliar","Somewhat Familiar",
"Somewhat Unfamiliar","Somewhat Familiar","Unfamiliar",
"Neither Unfamiliar or Familiar","Unfamiliar",
"Neither Unfamiliar or Familiar","Unfamiliar")),
Post = as.factor(c("Very Familiar",
"Very Familiar","Somewhat Familiar",
"Very Familiar","Very Familiar","Very Familiar",
"Very Familiar","Somewhat Familiar","Very Familiar",
"Somewhat Familiar"))
)
gglikert(example_data, add_totals = FALSE) +
scale_x_continuous(
labels = label_percent(),
limits = c(-1, 1)
)
#> Scale for x is already present.
#> Adding another scale for x, which will replace the existing scale.
创建于 2024-07-03,使用 reprex v2.1.0.9000