首页 > 解决方案 > 当 x 是离散变量时更改图形 y 轴的下限

问题描述

我正在尝试调整此图的 y 轴,使其从 1 而不是 0 开始。最好的方法是什么?

我过去针对此类问题使用的一种解决方案是使用 geom_rect 而不是 geom_bar。但是,这在这里不起作用,因为 x 轴不是连续的。

我试图创建一个单独的、连续的 x 变量,但它确实弄乱了图形的格式。

我希望它看起来像这张图,但 y 下限为 1,并且每个条向下移动 1 个单位以匹配。

在此处输入图像描述

代码:

groups %>% 
  ungroup() %>% 
  mutate(message = fct_relevel(message, "Personal", "General"),
         enviroattitudeshalf = fct_relevel(enviroattitudeshalf, "Low Environmental Attitudes", "High Environmental Attitudes")) %>% 
  ggplot(aes(x = message, y = mean)) + 
  geom_col(width = 0.5, fill = "003900") +
  geom_text(aes(label = round(mean, digits = 1), vjust = -2)) + 
  geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = .2, position = position_dodge(.9)) + 
  labs(title = "Environment: Evaluations of Personal and General Convincingness",
       y = "Rating",
       x = "Personal evaluation or general evaluation") + 
  ylim(0, 8) +
  facet_wrap(~enviroattitudeshalf)

数据:

structure(list(enviroattitudeshalf = c("Low Environmental Attitudes", 
"Low Environmental Attitudes", "High Environmental Attitudes", 
"High Environmental Attitudes"), message = c("General", "Personal", 
"General", "Personal"), mean = c(3.89473684210526, 3.37894736842105, 
4.43636363636364, 5.10909090909091), se = c(0.145460372156746, 
0.19522803582675, 0.160549137262631, 0.171509247396541)), row.names = c(NA, 
-4L), groups = structure(list(enviroattitudeshalf = c("High Environmental Attitudes", 
"Low Environmental Attitudes"), .rows = structure(list(3:4, 1:2), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), row.names = 1:2, class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

标签: rggplot2graphbar-chart

解决方案


使用coord_cartesian

library(tidyverse)

groups %>% 
  ungroup() %>% 
  mutate(message = fct_relevel(message, "Personal", "General"),
         enviroattitudeshalf = fct_relevel(enviroattitudeshalf, "Low Environmental Attitudes", "High Environmental Attitudes")) %>% 
  ggplot(aes(x = message, y = mean)) + 
  geom_col(width = 0.5, fill = "003900") +
  geom_text(aes(label = round(mean, digits = 1), vjust = -2)) + 
  geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = .2, position = position_dodge(.9)) + 
  labs(title = "Environment: Evaluations of Personal and General Convincingness",
       y = "Rating",
       x = "Personal evaluation or general evaluation") + 
  coord_cartesian(ylim = c(1, 8)) +  
  facet_wrap(~enviroattitudeshalf)

在此处输入图像描述


推荐阅读