首页 > 解决方案 > ggplot facet wrap 在 y 轴上得到小数而不是整数

问题描述

在使用 facet wrap 和 free scales 获得的两个图中之一的 y 轴值得到小数而不是整数。

我验证了数据框中的数字,它们是正确的。我尝试使用 facet grid 并得到了同样的结果。我也试过 scale_y_conitnuos 但两个图形的数​​字范围不同。我还尝试了两个图形,并将它们与 ggarrange 放在一起,但是有两个 y_axis 标签。我只想要一个共享的 y_axis 标签。使用下面的代码,我得到了想要的结果,除了 y_axis 中的小数。

   DATA <- tibble(
color = c( "blue","blue","blue","white","white","white","white",
    "white","white","white","red","red","red","red","red",
    "purple","purple","purple","purple","purple","purple",
    "black","black","black","black","black","black"), 
freq  = c(2, 2, 1, 2, 7, 1, 2, 1, 1, 1, 1,13, 6, 3, 1, 3,15,
     1,10, 6, 1, 2,13, 1, 5, 3, 1),
max = c(2, 2, 3, 3, 6, 6, 4, 2, 3, 8, 2, 9, 6,11, 4, 3, 9,
     2, 5, 4, 4, 4,10, 3, 2, 3, 2), 
code = c("A","E","B","A","E","D","B","F","C","G","A","E","B",
    "F","G","A","E","D","B","F","G","A","E","H","B","F","G"),
group = c("a)","b)","a)","a)","b)","a)","a)","b)","a)","b)","a)","b)"
    ,"a)","b)","b)","a)","b)","a)","a)","b)","b)","a)","b)","b)","a)","b)","b)")
)

ggplot(DATA, aes(x= code, y=freq,fill=color))+                                                                                           

facet_wrap(~group, nrow = 2, scales = "free") +
geom_bar(position=position_dodge(), stat="identity") +
geom_bar(position=position_dodge(), stat="identity", color = "black", 
fill = NA,  linetype = "dashed",
       size = 0.3,
       aes(group = color, y = max)) +

labs(y="Frequency",x= "Design")

我想在两个带有自由比例且只有一个 y_axis 标签的图中获得整数。小数是不够的。

标签: rggplot2

解决方案


如果您使用scales = "free_x"选项facet_wrap

你可以得到你想要的情节。

 facet_wrap(~group, nrow = 2, scales = "free_x")

完整代码如下:

ggplot(DATA, aes(x= code, y=freq,fill=color))+
  facet_wrap(~group, nrow = 2, scales = "free_x",) +
  geom_bar(position=position_dodge(), stat="identity") +
  geom_bar(position=position_dodge(), stat="identity", color = "black", 
           fill = NA,  linetype = "dashed",
           size = 0.3,
           aes(group = color, y = max)) +
  labs(y="Frequency",x= "Design")

结果


推荐阅读