使用 gglikert() 手动指定 x 轴限制

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

我正在使用 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() 的解决方案。

r ggplot2 plot axis
1个回答
0
投票

将现有的连续 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

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