首页 > 解决方案 > R:ggplot2 轴显示两个范围

问题描述

我正在使用带有 facet_wrap() 的 ggplot,如下所示:

plot <- ggplot(x, aes(Result, values, fill=Month))+
  geom_bar(stat="identity", position=position_dodge())

plot + facet_wrap(~Month)

我的情节如下: 在此处输入图像描述

如您所见,该图显示了两个不同的月份范围。

输入(x)是:

structure(list(Result = structure(c(2L, 1L, 2L, 1L), .Label = c("Negative", 
"Positive"), class = "factor"), values = c("100", "0", "66.6666666666667", 
"33.3333333333333"), Month = structure(c(2L, 2L, 1L, 1L), .Label = c("January", 
"February"), class = "factor")), class = "data.frame", row.names = c(NA, 
-4L))

我该如何解决?

标签: rggplot2

解决方案


看起来values在某些时候被强制转换为一个因素,levels 0, 100, 33.33, 66.66。我可以使用以下代码复制该图:

df <- tibble(result = c("neg", "pos", "neg", "pos"),
             values = factor(c(33.33, 66.66, 0, 100),
                             levels = c(0, 100, 33.33, 66.66)
                             ),
             month = factor(c("jan", "jan", "feb", "feb"),
                            levels = c("jan", "feb")
                            )
             )

ggplot(df, aes(result, values, fill=month)) +
    geom_bar(stat="identity", position=position_dodge()) + 
    facet_wrap(~ month)

在此处输入图像描述

您只需要转换values回数字向量。请注意,不返回级别的整数表示而不是您想要的数字,即执行类似as.numeric(as.character(values))and not的操作as.numeric(values)

df %>% mutate(values = as.numeric(as.character(values))) %>% 
    ggplot(aes(result, values, fill=month)) +
    geom_bar(stat="identity", position=position_dodge()) + 
    facet_wrap(~ month)

在此处输入图像描述


推荐阅读